如何执行全新的git revert以重新正确解决冲突
Git Revert时跳过旧冲突解决方案的方法
为什么会自动复用旧方案?
Git内置的rerere(Reuse Recorded Resolution)功能会记录你之前解决冲突的结果,当再次触发完全相同的冲突场景时,会自动套用之前的解决方案。你之前的revert操作虽然被reset撤销,但rerere的记录还在,所以再次执行git revert时会自动复用错误的冲突解决方式。
解决办法
1. 临时关闭rerere执行全新revert
- 先禁用本地仓库的
rerere功能:git config --local rerere.enabled false - 重新执行revert:
git revert <你的提交SHA> - 此时会重新进入冲突状态,按照正确逻辑解决冲突,完成后执行
git add <冲突文件>和git revert --continue即可。 - (可选)后续需要
rerere的话,重新开启:git config --local rerere.enabled true
2. 清除rerere缓存记录
如果不需要保留任何旧的冲突解决记录,直接清除缓存:
- 删除
rerere的缓存目录内容:rm -rf .git/rr-cache/* - 再次执行
git revert <你的提交SHA>,就能重新处理冲突了。
3. 单次revert跳过自动应用
也可以只在本次revert时跳过rerere的自动解决方案:
git revert --no-rerere-autoupdate <你的提交SHA>
这种方式仅对当前操作生效,后续rerere仍会保留旧记录。
内容的提问来源于stack exchange,提问作者A. K.
相关产品推荐
相关产品推荐

