git log 查看 merge 提交的作者需用 --pretty 指定 %an(author name)字段,如 git log --merges --oneline --pretty="%h %an %s";author 表示执行 git merge 的人,committer 可能不同,squash/rebase 合并不产生 merge commit。

git log 怎么看 merge 提交的作者和提交者
Git 中一次合并(merge)会产生一个 merge commit,它有两个关键身份字段:author(谁执行了 git merge 命令)和 committer(谁最终创建了这个提交对象)。通常你想找的是执行合并操作的人,也就是 author。
直接用 git log --oneline 看不到 author 信息,得显式要求:
-
git log --oneline --pretty="%h %an %s" origin/main—— 显示简短哈希、author 名、提交信息 -
git log -1 --pretty="format:%an %ad" <code>commit-hash—— 查单个 merge 提交的 author 全信息 - 如果分支刚合入,常用的是
git log --merges --oneline origin/main快速筛出所有 merge 提交
怎么定位“某个分支”对应的 merge 提交
Git 不在提交里存“这次 merge 了哪个分支”的元数据,它只记录父提交(parent commits)。所以不能靠提交内容反查源分支名,得靠命名习惯或上下文推断。
监控一个或多个 GitCode 仓库的 PR,通过 OpenClaw Gateway 自动执行 AI 审查,发布 PR 评论,并发送钉钉和企业微信通知。
- 先确认目标分支最后合入的位置:比如想查
feature/login是谁合进main的,先git merge-base main feature/login找共同祖先,再git log main ^$(git merge-base main feature/login)找main上独有的提交,其中 type 为merge的大概率就是那次合并 - 更实用的办法是结合分支命名和提交信息:多数团队会在 merge 提交信息里写
Merge branch 'feature/login',所以用git log --merges --grep="feature/login" origin/main - 注意:如果用了 squash merge 或 rebase 合并,就不会产生 merge commit,也就查不到“谁合并的”——此时只有原始提交的
author,不是合并操作人
GitHub / GitLab 页面上怎么快速确认
托管平台会补全 Git 本身不记录的信息,这是最省事的途径。
- 在 GitHub 上打开对应 PR 页面,右上角显示 “Merged by
username” —— 这个username就是点 Merge 按钮的人(对应 Git 的committer),和本地git log里的author可能不同 - GitLab 同理,在 MR 页面顶部看 “Merged by” 和 “Authored by”,两者常不一致
- 如果 PR 是通过 CI 自动合并(如 dependabot),页面上显示的 “Merged by” 可能是 bot 账户,实际操作人需点开 merge commit 查
author
为什么有时 git log 查不到预期的 merge 提交
常见原因不是命令写错,而是底层模型理解偏差。
- 本地分支没更新:
origin/main没git fetch,自然看不到远程新合入的提交 - 用了 fast-forward 合并:这种模式不产生 merge commit,
git log --merges完全找不到记录,只能靠git reflog或平台日志回溯 - 提交被 force-push 覆盖过:原 merge commit 哈希失效,
git log无法追溯,这时必须依赖托管平台的 audit log 或 CI 记录 -
git log --merges默认只查当前分支 HEAD 可达的提交,要查其他分支得显式指定,比如git log --merges origin/develop
真正难的不是命令怎么敲,而是搞清你看到的“合并”到底对应 Git 模型里的哪种操作类型——fast-forward、true merge、squash、rebase,每种留下的痕迹完全不同。

















