执行git rebase --rebase-merges遇冲突,如何实现分支历史移植?
Git分支移植问题与解决方案
我的Git仓库包含两个历史无关联的分支,结构如下:
A' A - B - [...] - C
其中[...]代表复杂的非线性多提交结构。提交A和A'均为仅包含一个近乎相同文件的简单提交,提交B的内容是删除该文件并从零开始开发。
我尝试执行以下命令:
git rebase --rebase-merges --onto A' B C
原本期望得到的分支结构是:
A' - B' - [...] - C'
这里的X'指修改了父节点的提交X。我本以为除生成B'时可能存在冲突外,其余过程可自动完成,但实际操作中Git却出现了奇怪的「已删除文件」冲突,即使是非合并提交也需要手动解决,同时还要求我重新处理[...]部分中曾出现过的所有合并冲突。
我希望Git生成一个除父节点为A'(SHA值不同)外与B完全一致的提交B',并以此迭代完成移植。这是否无法实现?
背景说明:我这么做是因为Overleaf的Git实现存在限制,无法直接用现有仓库初始化项目,只能先创建空项目(即我的A'),再将现有项目移植到其上方。
解决方案总结
- 原命令中的
B需改为A,修正后的命令为:git rebase --rebase-merges --onto A' A C - 针对需要重新处理合并冲突的问题,在执行
git rebase --continue前,需用git add添加恢复的文件,以此标记冲突已解决。
内容的提问来源于stack exchange,提问作者Stefan Witzel
相关产品推荐
相关产品推荐

