我最近加入了一个项目,该项目有一个 github 存储库,其分支实际上是整个源代码树的全新开始。我想复制一个分支,从“新源树”提交开始,复制到一个新的存储库,而没有旧源树的任何残留物留在存储库中(允许存储库小得多) 。实现这一目标的步骤是什么?
这是有问题的“新源树”提交:
警告...它真的很大。
https://github.com/ohmage/server/commit/078aecd78d54c6c20e124be3a54979e3a9d81c6f
最佳答案
我不知道这是否一定是最好的方法,而且我还没有广泛测试它,但我会按照这些思路做一些事情(假设 - 您想要从中复制的分支称为 我的分支
):
1) 在当前存储库中,创建一个新的孤立分支,其中包含要复制的第一个提交的内容:
$ git checkout --orphan -b tmpbranch <hash_of_first_commit>
$ git commit -a -m 'first commit'
2) 精挑细选您想要的其余提交:
$ git cherry-pick <hash_of_first_commit>..mybranch
3) 将此新的孤立分支推送到新存储库,作为新的 master
分支:
$ git push <URL_of_new_repo> refs/heads/tmpbranch:refs/heads/master
4) 删除tmpbranch
,以便垃圾收集最终会为您清理:
$ git checkout mybranch
$ git branch -D tmpbranch
关于git - 如何将部分历史记录从 git 分支传输到新存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24939021/