使用git 子模塊

添加公共的庫到當前項目中

添加submodule


git submodule add 子模塊項目地址

子模塊添加成功后當前項目會多一個.gitmodules隱藏文件,文件內容保存submodule的引用信息,包括路徑和repo地址


[submodule "VTAlertView"]

path = VTAlertView

url = https://github.com/xiaolidaodao/VTAlertView.git

子模塊添加完成在主項目提交所添加內容

在子項目加入到項目的時候,其實做了這樣三件事:

  • 記錄引用的子項目倉庫,在.git/config中

  • 記錄當前項目中子項目的目錄位置,在生成的.gitmodules中

  • 記錄子項目的commit id

所以在當前項目push到remote repository的時候,只是更新了引用的commit id,那么在其他人clone項目的時候,就可以獲取子項目的commit id,然后在git submodule update的時候獲取子項目commit id所表示的commit

clone帶有submodule的項目

  • 下載主項目

git clone 主項目地址

  • 下載子模塊

git clone --recursive 或 git submodule update --init --recursive

當前子模塊為HEAD分支,切換至master分支

因為父項目不記錄子模塊的修改,只記錄commit id,所以clone的時候只獲取到對應的commit,而不在任何分支上,但是master分支的commit id和HEAD保持一致,所以只要git checkout master,而不需要新建分支

修改submodule

兩種方式修改子模塊

  • 直接在主項目中打開子模塊修改

  • 單獨下載子模塊項目修改

注:子項目只要更新,父項目必須更新引用子項目的commit id

更新submodule


git submodule foreach git pull 或

cd submodule

git pull

參考

git submodule

Jenkins應用git submodule

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容