繁体   English   中英

是否可以将一堆文件从一个git存储库移动到另一个git存储库,同时保留(大多数)历史记录?

[英]Is it possible to move a bunch of files from one git repository to another while preserving (most) history?

我将一些文件添加到错误的存储库中,直到后来才知道它们已经有了相当多的历史(只是线性修订,没有分支或任何东西)。

是否有可能获取这些文件并将它们与历史记录一起移动到另一个git存储库? 我不在乎他们的残余物是否留在他们现在的残余物中,只要新的残余物具有它。

使用git log -p <filename> > <patchfile> (参见doc ),您可以导出文件的整个历史记录,然后通过git apply --reverse --index <patchfile>其应用到其他repo。 但是这不会重新创建提交,我还没有想出 git-apply的开关来做这件事。

如果您想要删除原始仓库中的文件,请参阅“如何从git的历史记录中删除敏感文件?”

您可以执行以下操作。

  1. 使用git fetch将分支的提示与错误的存储库中的所需文件一起提取到正确的存储库中。
  2. 使用git filter-branch--tree-filter--index-filter从提取的分支中删除除所需文件之外的所有内容。
  3. 使用git rebase或将整理后的提交重新应用到右侧存储库中的相应主分支上。

您可以在重新编写的分支上尝试使用git format-patch ,以便为在该repo上不正确地进行的最后一次提交生成补丁。
看到这个问题

然后,您将在正确的仓库上应用这些路径。
你会reset --hard你当前的分支,以摆脱额外的提交。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM