Git blame显示的作者不是修改者,怎么回事? 开发者茜茜 提问于 2026-02-06 15:27:24 阅读 57 工具 我在合并分支后用git blame查看某行代码的作者,显示的是合并者而不是实际修改者。之前在feature分支改过这个文件,合并到主分支后现在用git blame -L 10,20 filename看结果全显示合并提交的作者信息。 试过加参数--ignore-rev和--ignore-date都没用,该怎么追溯到具体修改代码的人呢?是不是和合并方式有关? 协作开发 我来解答 赞 10 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 上官景源 Lv1 这问题我之前也踩过。你用的是 merge 合并分支吧?git blame 默认会穿透 merge 提交,但某些情况会显示合并者的 commit 信息,而不是原始修改者。 根本原因是 merge 提交本身不记录文件修改内容,它只是把两个分支的差异合并在一起。这时候 blame 会追踪到 merge 提交的作者,而不是原始修改的那个人。 解决办法是加一个参数:git blame -M,这个参数会让 git blame 追踪文件重写(比如 merge 产生的改动),从而显示真正的修改者。你试试: git blame -M -L 10,20 filename 如果还是不行,那可能是你的 git 版本太老,-M 参数在某些旧版本支持不全。升级一下 git 再试试。 另外,如果你是用 rebase 合并进主分支的,那问题就更简单了,rebase 会保留原始提交的 author,blame 就不会出错。 以后做 merge 的时候记得加上 -M,不然真找不回原来的作者。这种坑踩一次就够了。 回复 点赞 7 2026-02-06 15:30 加载更多 相关推荐 2 回答 65 浏览 Git Blame显示的提交ID和实际修改者不符怎么办? 在合并分支后用git blame查看某行代码时,显示的总是合并提交的ID,而不是真正修改代码的人。我尝试过加--show-root参数也没用,该怎么准确定位原始作者? 比如我修改过组件的prop验证逻... 丽萍 工具 2026-01-27 16:33:31 2 回答 66 浏览 Git Blame显示某行代码被多人修改过,但只显示最后一次提交者怎么办? 在用Git Blame检查一个配置文件时,发现某行代码实际被三个人修改过,但运行git blame filename只显示最后一次提交的用户名。之前两次修改者的记录完全没显示,该怎么查更早的修改者呢?... Tr° 子皓 工具 2026-02-07 03:22:24 2 回答 119 浏览 为什么每次提交React组件代码后,Git总是显示我删除了所有空格? 大家好,我最近在用React开发页面时遇到个怪问题。每次提交修改后的组件代码,Git都显示我删除了大量空格,但代码实际功能没问题,视觉效果也没变化。 比如这个按钮组件: function MyButt... UX-慧青 前端 2026-01-30 07:56:33 1 回答 33 浏览 Git合并时冲突标记的内容被覆盖了怎么办? 今天合并分支时遇到冲突,用git merge --abort回退后,发现原来冲突标记里的内容还是被覆盖了! 比如在style.css里有段代码:.container { padding: 20px; ... 雅雯酱~ 工具 2026-02-16 01:31:25 2 回答 21 浏览 GitHub合并分支时冲突怎么解决总是报错? 我在本地用git merge feature-branch合并分支时,有个文件冲突改完后还是报错error: couldn't open 'path/to/file': No such file。已经... UI子赫 前端 2026-02-15 20:21:24 1 回答 15 浏览 Git stash后恢复代码时样式文件突然失效了怎么办? 正在用Git管理项目时遇到怪事。刚修改了一个按钮的CSS样式,用git stash暂存了更改去修紧急bug。回来后执行git stash apply说成功应用了,但浏览器里按钮样式完全没变,就像没改过... UP主~晨羲 工具 2026-02-15 09:47:31 2 回答 35 浏览 GitHub Actions部署到阿里云服务器时,SSH连接突然失败怎么办? 之前用GitHub Actions部署到阿里云服务器一直正常,但今天突然报错Permission denied (publickey),我检查了SSH密钥文件和known_hosts都没问题,防火墙也... 诸葛巧梅 工具 2026-02-11 13:23:24 1 回答 16 浏览 GitHub Actions Secrets未生效,Vue项目部署失败怎么办? 在用GitHub Actions给Vue项目部署到Netlify时一直报403错误,怀疑是NPM_TOKEN密钥没读到。 我按照文档设置了仓库Secrets里的NPM_TOKEN,但在workflow... 一国曼 工具 2026-02-11 10:03:37 2 回答 150 浏览 Git submodule更新后子模块代码没变化怎么办? 我在项目里用git submodule引入了第三方组件库,刚提交了组件库的新版本到远程仓库。按照教程执行了: git submodule update --remote component-libra... 夏侯爱香 工具 2026-02-05 20:11:30 2 回答 50 浏览 Git合并分支后CSS样式被覆盖怎么办? 最近团队用Git Flow协作时,我合并了一个feature分支到develop,发现某个组件的CSS样式被意外覆盖了。比如原本在.header里设置了background: #333;,但合并后变成... 景岩 Dev 前端 2026-02-05 14:03:39
根本原因是 merge 提交本身不记录文件修改内容,它只是把两个分支的差异合并在一起。这时候 blame 会追踪到 merge 提交的作者,而不是原始修改的那个人。
解决办法是加一个参数:
git blame -M,这个参数会让 git blame 追踪文件重写(比如 merge 产生的改动),从而显示真正的修改者。你试试:如果还是不行,那可能是你的 git 版本太老,-M 参数在某些旧版本支持不全。升级一下 git 再试试。
另外,如果你是用 rebase 合并进主分支的,那问题就更简单了,rebase 会保留原始提交的 author,blame 就不会出错。
以后做 merge 的时候记得加上 -M,不然真找不回原来的作者。这种坑踩一次就够了。