我有一个包含数百个提交的项目,它是另一个开源项目的分支。在创建分支时,git历史已被清除。现在我想重新附加历史记录。
原始项目有数千个提交,称为:
如何在不解决合并冲突的情况下重新连接它们?
尝试过的解决方案:
-
到目前为止,我遇到的所有解决方案都需要我解决冲突。这不应该是必需的,因为我试图在文件系统完全相同的点上附加历史记录。 我只想将历史记录重新附加到它来自的位置。有什么建议吗?
原始项目有数千个提交,称为:
A <- B <- C <- D
与此同时,我们的分支有:E <- F <- G <- H
这些分支没有共同的祖先,但提交D
和E
具有完全相同的文件系统。创建E
时,git历史已被清除。如何在不解决合并冲突的情况下重新连接它们?
尝试过的解决方案:
-
git cherry-pick fork/initial..fork/develop
- 我尝试将更改从分支挑选到原始仓库,但结果出现合并冲突。该解决方案试图线性重放提交,但由于所有分支和合并的存在,一路上会出现合并冲突。
- git rebase -i fork/initial fork/develop~0 --onto new-branch
- 与上述问题相同,rebasing而不是挑选也无法解决问题。它尝试按顺序重放提交,导致合并冲突。我还尝试使用--rebase-merges
,但无济于事。
- git merge fork/develop --allow-unrelated-histories
- 这是最接近我想要的。它仍然导致了大量合并冲突(出于我不理解的原因?),但我用git checkout fork/develop -- .
和git commit
一次性解决了所有合并冲突。这种解决方案的问题在于分支的“初始提交”仍然是触及每个文件的最旧提交,因此我没有获得巩固这些分支的任何好处。到目前为止,我遇到的所有解决方案都需要我解决冲突。这不应该是必需的,因为我试图在文件系统完全相同的点上附加历史记录。 我只想将历史记录重新附加到它来自的位置。有什么建议吗?