5

我决定从另一个旧的版本控制系统回顾性地提交一个从未在 Git 中出现过的历史。所以我创建了一个孤儿分支“newroot”,并将其他版本控制系统的提交导入到它。以下问题在 Git 的根提交之前插入提交?

“newroot”分支最终得到了与“master”分支的根提交完全匹配的文件。

现在我想将“master”分支重新定位到“newroot”孤立分支上,例如:

git rebase --onto newroot --root master

问题是我被提示解决所有合并冲突。多年来有数百次合并。我只是无法手动解决它们。而且真的没有必要,因为这些合并在过去已经解决了。由于变基实际上不会改变内容(因为我是在相同的树上变基),我希望 Git 能够准确地“重放合并”。

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

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


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

4

1 回答 1

6

以某种方式要求 Git 连接“newroot”和“master”分支,而无需实际变基。但我不确定这是否可能。

那就是所谓的嫁接点,后面跟着一个filter-branch用来改写主历史的。
请参阅此帖子作为示例此问题

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

git rebase --merge -s recursive -X theirs --onto newroot --root master
于 2016-06-29T07:08:11.387 回答