如果rerere解决了所有冲突,rebase会自动继续进行。

28

Git的rerere可以在rebase过程中重复使用之前的冲突解决方案,通过设置rerere.autoupdate = True来使已解决的文件处于预备状态(详见另一个问题)。然而,即使所有冲突都得到解决并且所有文件都被暂存,我仍需运行git rebase --continue来继续rebase操作。

如果rerere已经解决了所有冲突并暂存了所有更改,我该如何自动继续操作呢?


3
另一个问题有一个很好的答案:https://dev59.com/LWMl5IYBdhLWcg3w76sI#27513648 - hazzik
我不知道@frasertweedale的问题是否是这个意思,但我正在使用带有GIT_SEQUENCE_EDITOR的脚本中的git rebase -i。因此,不自动继续/跳过已解决的冲突非常麻烦,因为要么我必须手动完成它,要么使用大量的git resetgit cherry-pick等来模拟if!git rebase […];然后git rebase --abort; fi的优雅方式,从而有很多机会搞砸。 - Tim Landscheidt
2个回答

5

Rebase 应该在 Git 2.14.x/2.15 起更多地使用 rerere-autoupdate(自动更新)(2017 年第三季度)。

请看提交 f826fb7, 提交 8d8cb4b, 提交 6f0e577, 提交 9b6d7a6, 提交 5fb415b, 提交 fd4a3f4 (2017年8月2日) 作者是Phillip Wood (phillipwood)
(在提交 1016495中由Junio C Hamano -- gitster --合并于2017年8月22日)

这是因为现在:

rebase: 尊重 --rerere-autoupdate

Rebase 接受 '--rerere-autoupdate' 作为一个选项,但只有在同时给出 '-m' 时才会尊重它。
通过将该选项传递给 'git am' 和 'git cherry-pick',解决非交互式 rebase 的问题。

rebase -i: 尊重 --rerere-autoupdate

交互式 rebase 忽略了 '--rerere-autoupdate'。
通过在恢复交互式 rebase 的序列器状态时读取相应的文件,并在使用 '--preserve-merges' 进行 rebase 时将 '--rerere-autoupdate' 传递给合并和 cherry-pick 来解决此问题。


2
请注意,这对于“rebase --continue”无效,即您需要在初始rebase命令中指定它。 - jmiserez

3
不,变基或合并并没有自动提供自动提交的选项来解决冲突。您可以在“合并”标题下了解有关git合并的更多信息这里。在变基时,git config也不提供自动提交的选项。请注意,在合并时,您可以选择不进行提交。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接