參考:
Git Tools - Subtree Merging
The power of Git subtree
git subtree用法
About Git subtree merges
應(yīng)用場景
兩個項目共用一部分代碼管钳,把這部分抽象出來,作為 subtree
如何添加 subtree
git remote add -f <子倉庫名> <子倉庫地址>
git remote add -f cloudwood-common https://github.com/yunlaiwu/cloudwood-common.git
解釋:其中-f意思是在添加遠(yuǎn)程倉庫之后,立即執(zhí)行fetch膘流。
我這里沒有加 -f 參數(shù),所以要手動 fetch
git subtree add --prefix=<子目錄名> <子倉庫名> <分支> --squash
git subtree add --prefix=cloudwood-common cloudwood-common master --squash
解釋:–squash意思是把subtree的改動合并成一次commit飞蚓,這樣就不用拉取子項目完整的歷史記錄胜榔。–prefix之后的=等號也可以用空格
執(zhí)行完這步后就可以看到項目目錄下已經(jīng)出現(xiàn)了子目錄
從遠(yuǎn)程倉庫更新子目錄
git fetch <遠(yuǎn)程倉庫名> <分支>
git fetch cloudwood-common master
git subtree pull --prefix=<子目錄名> <遠(yuǎn)程分支> <分支> --squash
git subtree pull --prefix cloudwood-common cloudwood-common master --squash
從子目錄push到遠(yuǎn)程倉庫
-
首先進(jìn)到子目錄,去 add 和 commit
git subtree push --prefix=<子目錄名> <遠(yuǎn)程分支名> 分支
git subtree push --prefix cloudwood-common cloudwood-common master
進(jìn)入github可以看到更新成功