git log --author="zhangsan" --no-merges -p可精准定位某人提交的全部代码变更,含完整diff,跳过合并提交干扰,支持路径限定与正则匹配。

直接用 git log 加 --author 和 -p 就能定位到某人改了哪些代码、具体改了什么,不用切分支、不用查 PR 页面。
只看某个作者的提交记录(含差异)
最常用也最直接的方式是组合过滤与补丁输出:
-
git log --author="zhangsan" -p:列出所有由 zhangsan 提交的完整 diff,每条提交后紧跟修改内容 - 作者名支持正则或模糊匹配:
--author="zhang.*"或--author="Zhang"(注意大小写敏感,默认开启) - 如果想限制范围,可加路径:
git log --author="lihua" -p src/api/,只看该作者在src/api/下的改动 - 搭配
--oneline先快速扫一遍有哪些提交:git log --author="wangming" --oneline,再挑哈希单独看 diff:git showc68142b
排除合并提交干扰,专注实际代码变更
合并提交(merge commit)本身不带代码变更,但会出现在 git log 结果里,干扰判断。加上 --no-merges 更干净:
仅从仓库的暂存文件生成 Git 提交消息。当用户要求 Codex 根据暂存更改、缓存差异、Git 索引或已通过 `git add` 添加的文件来编写、起草、创建或建议提交消息时使用;切勿代表用户执行提交操作。
-
git log --author="zhangsan" --no-merges -p:跳过所有 merge 提交,只显示真实修改 - 如果还混着别人提交,可加
--committer区分 author 和 committer:git log --author="zhangsan" --committer="zhangsan" --no-merges -p,确保是本人写的也本人提的 - 注意:
--author查的是原始作者(比如git cherry-pick后仍保留原作者),--committer才是执行提交的人
在 VS Code 里快速聚焦某人改过的行
命令行适合批量查,但日常开发中更需要“点哪看哪”——GitLens 能直接在编辑器里完成这件事:
- 打开文件,鼠标悬停任意行,GitLens 会在行号旁显示该行的最后修改者、提交哈希和相对时间
- 右键某行 → “GitLens: Blame Line”,立刻弹出该行所属的完整
git blame输出 - 若想只看某人负责的所有行,点击 GitLens 侧边栏的 “Authors” 标签页,选中作者名,列表自动过滤出其修改过的全部文件和行号
- 这个视图不会受 merge 提交影响,因为
git blame本身只追踪行级最后一次修改,天然绕过合并节点
真正容易被忽略的是 author 和 committer 的区别——尤其在 git rebase 或 git cherry-pick 后,你看到的“作者”可能不是当前分支上操作的人。查责任归属时,优先看 --committer;查原始设计意图时,才看 --author。










