git subtree 的使用

参考:
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。

我这里没有加 -f 参数,所以要手动 fetch
  • git subtree add --prefix=<子目录名> <子仓库名> <分支> --squash
git subtree add --prefix=cloudwood-common cloudwood-common master --squash

解释:–squash意思是把subtree的改动合并成一次commit,这样就不用拉取子项目完整的历史记录。–prefix之后的=等号也可以用空格

执行完这步后就可以看到项目目录下已经出现了子目录

git subtree 的使用_第1张图片

从远程仓库更新子目录

  • git fetch <远程仓库名> <分支>
git fetch cloudwood-common master
git subtree 的使用_第2张图片
  • git subtree pull --prefix=<子目录名> <远程分支> <分支> --squash
git subtree pull --prefix cloudwood-common cloudwood-common master --squash
git subtree 的使用_第3张图片

从子目录push到远程仓库

  • 首先进到子目录,去 add 和 commit

  • git subtree push --prefix=<子目录名> <远程分支名> 分支

git subtree push --prefix cloudwood-common cloudwood-common master
git subtree 的使用_第4张图片

进入github可以看到更新成功

git subtree 的使用_第5张图片

你可能感兴趣的:(git subtree 的使用)