以与先前解决的方式相同的方式解决git rebase冲突

时间:2016-06-29 06:53:59

标签: git git-merge rebase git-rebase git-merge-conflict

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

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

现在我想将“master”分支重新绑定到“newroot”orphan分支,如:

git rebase --onto newroot --root master

问题是我被提示解决所有合并冲突。在很多年的时间里,有数百个合并。我只是无法手动解决它们。并且确实没有必要,因为这些合并在过去已经得到解决。由于rebase实际上没有改变内容(因为我在相同的树上重新定位),我希望Git完全“重放合并”。

有没有办法指定rebase应该使用与之前使用的相同的分辨率?

我明白“rerere”可能对此有所帮助。但是当我最初合并时,我必须已经启用它,对吧?或者我可以回顾性地重新创建“rerere”缓存吗?

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

1 个答案:

答案 0 :(得分:3)

  

以某种方式要求Git连接" newroot"和#34;主人"分支,没有实际的变基。但我不确定这是否可能。

这称为graft point,后跟filter-branch以重写主历史记录。
请参阅this post as an examplethis question

在rebase方面,你可以尝试使用像他们这样的合并策略来解决使用主分支内容的任何冲突(因为主人正在重新定位)

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