git -- 子模塊的配置與使用

子模塊效果

配置完子模塊後,能夠在一個大項目中管理不少嵌套的git子項目,固然也能夠管理非git子模塊目錄和文件的變化。下面是我配置的子模塊目錄。git

在本地也能夠提交子模塊項目的comit,也能夠提交自己項目的commit。 在項目中,git只記錄git子模塊的commit節點,好比我新提交了一個子模塊的commit。github

git子模塊在github上只是顯示一個子模塊的連接。shell

可是在本地,你是能夠管理項目和子項目的,只是子模塊的commit會提交到本身的倉庫,父項目只記錄commit。bash

子模塊配置

添加子模塊

git submodule add ***.git 目錄名
複製代碼

更新子模塊

git submodule update --recursive --remote //  -f 還能夠強制拉出
複製代碼

刪除Submodule

這個稍微複雜點工具

rm -rf 子模塊目錄 #刪除子模塊目錄及源碼
vi .gitmodules #刪除項目目錄下.gitmodules文件中子模塊相關條目
vi .git/config   #刪除配置項中子模塊相關條目
rm .git/module/子模塊名   # 刪除模塊下的子模塊目錄,每一個子模塊對應一個目錄,注意只刪除對應的子模塊目錄便可
 #執行完成後,再執行添加子模塊命令便可,若是仍然報錯,執行以下:
git rm --cached 子模塊名稱 #完成刪除後,提交到倉庫便可。
複製代碼

忽略文件權限變動

這個在不一樣操做系統拷貝項目時候,讓git忽略文件權限的變化。spa

git config core.filemode false

git submodule foreach --recursive git config core.filemode false # 每一個子模塊都忽略
複製代碼

本地提交git子模塊

推薦一個git工具,gitKraken,它可讓你方便的管理子模塊的提交。操作系統

固然,你也能夠進入子模塊目錄使用命令行,注意檢查所在的分支。

默認 git submodule update 並不會將 submodule 切到任何 branch,因此,默認下 submodule 的 HEAD 是處於遊離狀態的 (detached HEAD state)。因此在修改前,記得必定要用 git checkout master 將當前的 submodule 分支切換到 master,而後才能作修改和提交。命令行

不然你就要使用rebase 或者 cherry-pick了。code

最後記得提交父項目,由於子模塊的commit信息更新了,這屬於父模塊的變化。cdn

參考

blog.devtang.com/2013/05/08/…

相關文章
相關標籤/搜索