以与之前解决相同的方式解决 git 变基冲突

Resolve git rebase conflicts the same way they were resolved previously

我决定从其他旧版本控制系统追溯提交历史记录,该历史记录从未出现在 Git 中。所以我创建了一个孤立分支 "newroot",并将来自其他版本控制系统的提交导入到它。以下问题 Insert a commit before the root commit in Git?

"newroot" 分支的文件与 "master" 分支的根提交完全匹配。

现在我想将 "master" 分支变基到 "newroot" 孤儿分支,例如:

git rebase --onto newroot --root master

问题是系统提示我解决所有合并冲突。多年来有数百次合并。我只是无法手动解决它们。而且真的没有必要,因为这些合并在过去已经解决了。由于 rebase 实际上并没有改变内容(因为我在同一棵树上 rebase),我希望 Git 完全 "replay the merge"。

有没有办法指定变基应该使用与以前使用的分辨率相同的分辨率?

我知道 "rerere" 可能对这里有所帮助。但是我必须在最初合并时已经启用它,对吗?或者我可以回顾性地重新创建 "rerere" 缓存吗?


我可以想象一个替代解决方案来完成我的任务。以某种方式要求 Git 连接 "newroot" 和 "master" 分支,而不实际变基。但我不确定这是否可能。

To somehow ask Git to concatenate the "newroot" and "master" branches, without actually rebasing. But I'm not sure if that's possible.

为了重写主历史,这被称为graft point, followed by a filter-branch
参见 this post as an example or this question

在变基方面,您可以尝试使用像他们那样的合并策略,使用 master 分支内容解决任何冲突(因为 master 正在变基)

git rebase --merge -s recursive -X theirs --onto newroot --root master