是否可以使用git rebase更改提交消息,但无需重新解决合并冲突?
我需要对旧的仓库进行保护,我不想更改任何实际代码,只需更改消息。
我试过--preserve-merges
。
答案 0 :(得分:12)
git有一个鲜为人知的特征叫做“Reuse Recorded Resolutions”或者rerere。
您可以通过运行git config --global rerere.enabled 1
全局启用它。
如果启用了rerere,git将自动保存冲突解决方案,如果遇到相同的冲突,将在以后重用这些解决方案。这样做的最终结果是不要求用户重新解决之前看到的这些冲突。
a post on git-scm.com进一步解释了该功能。有关更多详细信息,请查看help document for git rerere。
答案 1 :(得分:3)
注意:由于contrib/rerere-train.sh
脚本应该重新训练rerere(你可以看到manual retraining here)
为了确保rerere
忘记当前的所有rebase解析,现在您可以使用Git 2.14.x / 2.15(2017年第3季度)的contrib/rerere-train
官方选项:--overwrite
标记。
commit ad53bf7见Raman Gupta (rocketraman
)(2017年7月26日)
(由Junio C Hamano -- gitster
--合并于commit aec68c3,2017年8月11日)
contrib/rerere-train
:可选择覆盖现有分辨率为用户提供使用a覆盖现有分辨率的选项
--overwrite
标志。例如,如果用户知道他们已经在他们的rerere缓存中有冲突的条目,但是希望根据传递给rerere-train的合并提交放弃它并重新训练,则可以使用此方法。脚本。