1. 程式人生 > >Git 通過submodule新增子專案/庫(git倉庫巢狀)

Git 通過submodule新增子專案/庫(git倉庫巢狀)

Git歸併有兩種策略:遞迴,章魚。

1.遞迴策略:當分支數只有兩個的時候。

2.章魚策略:當分支數大於兩個的時候。

Git會自動選擇歸併的方法。

3.子樹策略:是Git另一種歸併方法。(submodule)

    它可以把另一個子專案,嵌入到當前專案。而且會非常聰明的合併這些子專案。(以後就不會有困惑了,在引用其他專案時。)

Git使用submodule命令:

#新增子模組:
git submodule add ~/git/libs/lib1.git libs/lib1
#git會在專案下生成.gitmodule
cat .gitmodule
[submodule "libs/lib1"]
        path = libs/lib1
        url = ~/git/libs
/lib1.git
#進入libs/lib1目錄
cd libs/lib1
#操作新的庫lib1,看得出是lib1自己的庫remote資訊。
git remote -v
#進入專案根目錄,初始化submodule,更新submodule(必須在根目錄執行命令)
cd ../../
git submodule init
git submodule update

在 libs/lib1/ 目錄下新增文件,發現新增加的子模組lib1,在git狀態列表中,多了個(untracked content),並不會把lib1庫下的所有改動,在git status體現出來。(方便了專案管理子模組)

像操作git一樣在子模組管理git工作區。

 注: 

        如果在新增子模組後,不回到最上層主分支.忘記了呼叫命令:git submodule update,那麼你極有可能再次把舊的submodule依賴資訊提交上去,當呼叫命令:git commit -a

參考:

出處:https://my.oschina.net/iatbforever/blog/228914