如何将部分历史记录从 git 分支传输到新存储库?

问题描述 投票:0回答:1

我最近加入了一个项目,该项目有一个 github 存储库,其分支实际上是整个源代码树的全新开始。 我想复制一个分支,从“新源树”提交开始,复制到一个新的存储库,而没有旧源树的任何残留物留在存储库中(允许存储库小得多) 。 实现这一目标需要哪些步骤?

这是有问题的“新源树”提交:

警告...它真的很大。

https://github.com/ohmage/server/commit/078aecd78d54c6c20e124be3a54979e3a9d81c6f

git github version-control git-branch git-merge
1个回答
4
投票

我不知道这是否一定是最好的方法,而且我还没有广泛测试它,但我会按照这些思路做一些事情(假设 - 你想要复制的分支称为

mybranch
):

  1. 在当前存储库中,创建一个新的孤立分支,其中包含要复制的第一个提交的内容:
    $ git checkout --orphan tmpbranch <hash_of_first_commit>
    $ git commit -a -m 'first commit'
  1. 挑选您想要的其余提交:
    $ git cherry-pick <hash_of_first_commit>..mybranch
  1. 将此新的孤立分支推送到新存储库,作为新的
    master
    分支:
    $ git push <URL_of_new_repo> refs/heads/tmpbranch:refs/heads/master
  1. 删除
    tmpbranch
    ,这样垃圾收集最终会为你清理干净:
    $ git checkout mybranch
    $ git branch -D tmpbranch
© www.soinside.com 2019 - 2024. All rights reserved.