让Git Rerere自动标记已解决的文件?

19
我正在使用git rerere,它很有用,但存在一个问题:当它自动解决文件后,它不会将其标记为已解决(例如使用git add)。因此,如果我运行'git mergetool'命令,它会像文件仍然存在所有冲突一样打开该文件。
到目前为止,我编写了一个小的shell脚本,可以扫描所有标记为冲突的文件,查找冲突标记符(例如>>>>>>>),如果它们没有,则调用git-add命令进行标记。
是否有更好的方法来解决这个问题?我错过了一些适用于git rerere的标志吗?
1个回答

21
也许可以通过git config设置来解决问题:
rerere.autoupdate

当设置为true时,git-rerere会使用先前记录的解决方案清除地解决冲突,并更新索引中的结果内容。
默认为false。
注意:自Git1.7.0以来,“git rerere”有rerere.autoupdate配置,但没有办法从命令行撤销它;给"merge","revert"等选项添加--no-rerere-autoupdate以解决此问题。

Git 2.38 (2022年第三季度)更新了关于"--[no-]rerere-autoupdate"选项的文档。

请参见commit cb54fc9 (2022年8月3日)和commit 0dbc715 (2022年7月15日),作者为Junio C Hamano (gitster)
(由Junio C Hamano -- gitster --commit 3adacc2中合并,2022年8月14日)

doc: 澄清rerere-autoupdate

"--[no-]rerere-autoupdate"选项控制rerere机制启动后发生的事情,并且不会阻止rerere机制首先触发。在当前文本中不清楚"--no-rerere-autoupdate"是否停止自动解决冲突。请重写该句以澄清。现在,rerere-options已经包含在其手册页面中:当rerere机制重用记录的解决方案来更新工作树中的文件时,允许它还使用解决方案的结果更新索引。在使用单独的git add将结果提交到索引之前,--no-rerere-autoupdate是检查rerere操作并捕获潜在错误合并的好方法。

啊,我的问题就在这里。我一直在 git-rerere 页面上寻找帮助,但那里的信息非常有限。我没有想到去其他的 git 手册页面中查找 rerere 相关的信息! - davr

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