GIT Submoduleの使用

2328 ワード

1つのプロジェクトに他のサポートプロジェクトのソースコードを含める必要がある場合に使用される機能は、2つのプロジェクトが独立しており、プライマリプロジェクトが別のサポートプロジェクトを使用できるようにします.
git submodule add   #      

サブプロジェクトを追加すると表示されます.gitmodulesのファイルです.mapping between the project's URL and the local subdirectoryを記録するプロファイルです.且.gitmodule projectsはgitバージョン制御で、他のプロジェクトに参加している人がsubmodule projectsの状況を知ることができます.
git submodule init  #      .gitmodules  
git submodule update  #     submodule  

取得するアイテムにsubmodulesが含まれている場合、pull main projectのときにsubmodulesのソースコードが同時に取得されないため、ローカルを実行する必要がある.gitmodules初期化コマンドは、リモートsubmoduleソースコードを再同期します.clone main projectにsubmodulesをすべて含める場合は、次のコマンドを使用します.
git clone --recurse-submodules   #              

操作submodulesソース:submoduleのdirecotryに入り、次のコマンドを実行します.
git fetch  #   submodule    
git merge origin/  #   submodule    
git pull  #   submodule           
git checkout   #   submodule branch
git commit -am "change_summary"  #   submodule commit

# or

#   submodule  ,     branch master,     branch, .gitmodule   
git submodule update --remote   
#     submodule  ,    .gitmodule        ,      master
git submodule update --remote  
#  submodule commits            push
git push --recurse-submodules=check
#     submodule main project
git push --recurse-submodules=on-demand

.gitmoduleの内容は大体次の通りです
[submodule ]
    path = 
    url = 
    branch = 

「foreach」キーワードで複数のsubmodulesを同時に管理するには、次のようにします.
# stash  submodules
git submodule foreach 'git stash'
#   submodules     
git submodule foreach 'git checkout -b '

submodulesのコマンドは長く、効率を向上させるためにaliasを作成し、記録することができます.git/configパスの下.次のようになります.
git config alias.spush 'push --recurse-submodules=on-demand'
git config alias.supdate 'submodule update --remote --merge'

これにより、次のコマンドを使用して効率を向上させることができます.
git supdate
git spush