取消

git subtree 的使用

本文收集 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])

登录 GitHub 账号进行评论