我在错误的存储库中添加了一些文件,直到后来才知道它们已经有了相当多的历史(只是线性修订,没有分支或任何东西)。
是否可以获取这些文件并将它们与历史记录一起移动到另一个git存储库?我不在乎他们的残余物是否留在他们当前的残余物中,只要新的残留物都可以。
答案 0 :(得分:2)
使用git log -p <filename> > <patchfile>
(请参阅doc),您可以导出文件的整个历史记录,然后通过git apply --reverse --index <patchfile>
将其应用于其他仓库。但是,这不会重新创建提交,而git-apply
会{{1}}切换提交。
如果您想删除原始仓库中的文件,请参阅haven't figured out。
答案 1 :(得分:1)
您可以执行以下操作。
git fetch
将所需文件从错误的存储库中拉出分支的一端到正确的存储库中。git filter-branch
与--tree-filter
或--index-filter
一起使用,以删除所提取分支中所需文件以外的所有内容。git rebase
或将整理后的提交重新应用到右侧存储库中的相应主分支上。答案 2 :(得分:0)
您可以在重新加工的分支上尝试git format-patch
,以便为该回购上不正确的最后一次提交生成补丁。
请参阅this SO question。
然后,您将在正确的仓库上应用这些路径
你会reset --hard
当前的分支,以摆脱额外的提交。