首页/开发/Git 与协作速查/git log --merge 查看冲突来源
合并变基与冲突71 条

git log --merge 查看冲突来源

冲突暂停时用 --merge 过滤出「两方历史上真正改过」的提交,快速定位是谁、因为哪些提交引入了冲突。

Git 与协作速查开发更新于 2026-10-13

查看冲突来源的日志

冲突暂停时加上该选项,可以把范围过滤到「两方历史上真正改动过」的提交,快速定位是谁、因为哪些提交引入了冲突。它只在存在未解决冲突时与普通日志不同,状态干净后输出与普通日志一致。

基本信息

用途只列出导致当前冲突的提交
语法git log --merge -p -- <路径>
配套选项--left-right 用左右标记区分提交来自哪一方
生效条件仅在存在未解决冲突时进行过滤
使用顺序先读提交信息,再决定冲突的取舍

典型使用场景

  • 冲突涉及不熟悉的代码时先弄清改动来源
  • 确认冲突是哪个提交引入的
  • 比较双方改动的意图后再决定取舍
  • 为冲突解决结果留下可追溯的判断依据
  • 排查经常冲突文件的改动历史

常用示例

常用示例
git log --merge --oneline                # 只列出涉及冲突的提交
git log --merge -p -- src/app.js         # 查看该文件的相关改动内容
git log --merge --left-right --oneline   # 用左右标记区分提交来自哪一侧
git log --oneline -- src/app.js | head    # 对照完整历史,判断上下文

输出读法

标记含义
左侧标记提交来自合并的当前分支一侧
右侧标记提交来自被合并进来的分支一侧
提交信息判断改动意图与上下文的依据
路径过滤只看与冲突文件相关的提交
先读提交信息往往就能判断冲突的语义取舍,比盯着冲突标记逐行猜测高效得多。
只看一方的历史容易误解冲突成因,左右标记配合使用才能还原两边各自改了什么。
把提交信息与改动内容一起看:有些冲突源于对方修复了同类问题,直接取一侧反而会丢掉修复。
判断完冲突来源后,把结论写进提交信息或评审回复,后续再遇到同一文件冲突时能直接复用判断依据。

易错点

  • 仓库状态干净时使用该选项没有过滤效果,误以为命令出错,先确认冲突仍未解决
  • 把文件登记进索引后它就从过滤结果里消失,定位工作要趁冲突尚未处理时完成
  • 仅凭一方历史推断取舍,忽略另一方的提交意图,解决结果可能违背原设计
  • 只看提交标题不看改动内容,标题与实际改动不一致时判断会跑偏

数据来源与参考

  • Git 官方文档:git-log(--merge)
  • Pro Git 2nd Edition · 7.8 高级合并
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌