git reword没有再次解决合并冲突

Pat*_*ton 13 git rebase git-rebase

是否可以使用git rebase更改提交消息,但无需重新解决合并冲突?

我需要对旧的仓库进行保护,我不想改变任何实际的代码,只需更改消息.

我试过了--preserve-merges.

Jor*_*wis 15

git有一个鲜为人知的特征叫做"Reuse Recorded Resolutions"或者rerere.

您可以通过运行全局启用它rerere.

如果启用了rerere,git将自动保存冲突解决方案,如果遇到相同的冲突,将在以后重用这些解决方案.这样做的最终结果是不要求用户重新解决这些先前看到的冲突.

该功能将在git-scm.com上的帖子中进一步解释.有关更多详细信息,请查看git rerere帮助文档.

  • 不幸的是,如果你在第一次合并时启用它,这只会对你有帮助 - 现在已经太晚了.在Git源代码的贡献部分有一个名为rerere-train的脚本(https://github.com/gitster/git/blob/master/contrib/rerere-train.sh),它通过现有的历史记录并制作了rerere从现有的合并中学习冲突解决方案 - 假设它有效,在这种情况下会帮助你. (6认同)

Von*_*onC 5

注意:由于该contrib/rerere-train.sh脚本应该重新训练rerere(您可以在此处查看手动重新训练

为了确保rerere忘记当前所有的基准解析度,您现在可以使用Git 2.14.x / 2.15(2017年第三季度)作为官方选项contrib/rerere-train--overwrite标志。

参见Raman Gupta()的commit ad53bf7(2017年7月26日(由Junio C Hamano合并--commit aec68c3中,2017年8月11日)rocketraman
gitster

contrib/rerere-train:可以选择覆盖现有的分辨率

为用户提供一个使用--overwrite标志覆盖现有分辨率的选项 。

例如,如果用户知道他们的重命名缓存中已经有冲突条目,但是希望根据传递到重定义脚本的合并提交将其删除并重新训练,则可以使用此方法。