配置完子模塊後,能夠在一個大項目中管理不少嵌套的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 還能夠強制拉出
複製代碼
這個稍微複雜點工具
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工具,gitKraken,它可讓你方便的管理子模塊的提交。操作系統
默認 git submodule update 並不會將 submodule 切到任何 branch,因此,默認下 submodule 的 HEAD 是處於遊離狀態的 (detached HEAD state)。因此在修改前,記得必定要用 git checkout master 將當前的 submodule 分支切換到 master,而後才能作修改和提交。命令行
不然你就要使用rebase 或者 cherry-pick了。code
最後記得提交父項目,由於子模塊的commit信息更新了,這屬於父模塊的變化。cdn