本文收集 git subtree 的使用。
将 B 仓库添加为 A 仓库的一个子目录
在 A 仓库的根目录输入命令:
1
$ git subtree add --prefix=SubFolder/B https://github.com/walterlv/walterlv.git master
这样,B 仓库的整体,会被作为 A 仓库中一个 SubFolder/B
的子文件夹,同时保留 B 仓库中的整个日志记录。
从 A 仓库中分离出一个子文件夹成为 B 仓库
在 A 仓库的根目录输入命令:
1
git subtree split --prefix=SubFolder/B -b b-branch
这样,SubFolder/B
文件夹便会被分离到新创建的 b-branch
分支。随后,如果你需要将分离的子文件夹推送到新仓库的话,直接将这个分支推送过去就可以了。
将 A 仓库中的 B 子目录推送回 B 仓库
1
$ git subtree push --prefix=SubFolder/B https://github.com/walterlv/walterlv.git master
当然,如果你经常需要使用 subtree 命令,还是建议将那个远端设置一个别名,例如设置 walterlv
:
1
$ git remote add walterlv https://github.com/walterlv/walterlv.git
那么,上面的命令可以简单一点:
1
$ git subtree push --prefix=SubFolder/B walterlv master
后面,我们命令都会使用新的远端名称。
将 B 仓库中的新内容拉回 A 仓库的子目录
1
$ git subtree pull --prefix=SubFolder/B walterlv master
本文会经常更新,请阅读原文: https://blog.walterlv.com/post/git-subtree-usage.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected]) 。