我最近加入了一个项目,该项目有一个github repo,其分支实际上是整个源代码树的新起点。我想复制那个分支,从刚刚从“新的源代码树”提交开始,到一个新的仓库,没有任何遗留下来的旧源代码树的遗留物(允许仓库更小) 。完成此任务的步骤是什么?
这是有问题的“新源代码树”提交:
警告......它真的很大。
https://github.com/ohmage/server/commit/078aecd78d54c6c20e124be3a54979e3a9d81c6f
答案 0 :(得分:3)
我不知道它是否是最好的方法,而且我还没有对它进行过广泛的测试,但我会按照这些方式做一些事情(假设 - 你想要的分支)复制自称为mybranch
):
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