参考:
Git Tools - Subtree Merging
The power of Git subtree
git subtree用法
About Git subtree merges
应用场景
两个项目共用一部分代码,把这部分抽象出来,作为 subtree
如何添加 subtree
git remote add -f <子仓库名> <子仓库地址>
git remote add -f cloudwood-common https://github.com/yunlaiwu/cloudwood-common.git
解释:其中-f意思是在添加远程仓库之后,立即执行fetch。
git subtree add --prefix=<子目录名> <子仓库名> <分支> --squash
git subtree add --prefix=cloudwood-common cloudwood-common master --squash
解释:–squash意思是把subtree的改动合并成一次commit,这样就不用拉取子项目完整的历史记录。–prefix之后的=等号也可以用空格
执行完这步后就可以看到项目目录下已经出现了子目录
从远程仓库更新子目录
git fetch <远程仓库名> <分支>
git fetch cloudwood-common master
git subtree pull --prefix=<子目录名> <远程分支> <分支> --squash
git subtree pull --prefix cloudwood-common cloudwood-common master --squash
从子目录push到远程仓库
-
首先进到子目录,去 add 和 commit
git subtree push --prefix=<子目录名> <远程分支名> 分支
git subtree push --prefix cloudwood-common cloudwood-common master
进入github可以看到更新成功