Git 反复合并同类冲突,可以试试 rerere

58 次浏览2 条回复

同一类冲突经常在不同分支里重复出现时,可以让 Git 记录已经解决过的冲突:

git config rerere.enabled true

之后再次遇到相同冲突,Git 会尝试复用之前的解决结果。可以先看本次是否命中了记录:

git rerere status

环境:Git 1.7.5+。它不会替你盲目提交,复用后仍建议检查 diff 和测试结果;如果不想在全局启用,把配置命令放在具体仓库里执行即可。

这个对长期维护的分支挺省事。补一个容易忽略的点:如果某次复用结果不对,可以用 git rerere forget path/to/file 忘掉该文件的记录,再重新解决;提交前还是要看 diff,必要时跑一遍测试,避免把错误答案也缓存下来。

还有个实用细节:想确认 rerere 实际复用了什么,可以看 git rerere diff。如果只是想清理已经不需要的历史记录,再用 git rerere gc;这两个和 git rerere status 配合起来,排查起来会更放心。