Git命令详解-git blame
git blame 是 Git 里用来逐行追溯代码修改历史的命令,核心作用是:查看文件里每一行代码,最后是被谁、在哪个提交、什么时候修改的。
一、字面意思
- blame 本义:责备、归咎于
- 在 Git 里是中性工具义:“这行代码最后一次修改,归属于哪个提交/开发者”
- 别名:
git annotate(含义完全一样)
二、作用与输出
执行:
git blame 文件名
典型输出格式:
a1b2c3d (张三 2026-01-15 10:30 +0800 1) #include <stdio.h>
d4e5f6g (李四 2026-02-20 14:15 +0800 2) int main() {
a1b2c3d (张三 2026-01-15 10:30 +0800 3) printf("hello\n");
d4e5f6g (李四 2026-02-20 14:15 +0800 4) return 0;
d4e5f6g (李四 2026-02-20 14:15 +0800 5) }
每列含义:
- 短提交哈希(a1b2c3d)
- 作者(张三)
- 修改时间
- 行号
- 代码内容
三、常用场景
- 线上出 bug,想知道谁最后改了这行
- 看不懂某段代码,找原作者咨询
- 代码 review:确认每行的修改来源与责任
- 重构时:了解代码的历史变迁
四、常用选项
- 只看某几行:
git blame -L 10,20 文件名 # 只看第10~20行 - 忽略空格/换行变化(只看实质性代码修改):
git blame -w 文件名 - 显示作者邮箱:
git blame -e 文件名
五、容易混淆
git blame:行级、空间上看“最后一次修改是谁”git log:提交级、时间上看“整个项目/文件的提交历史”
简单记:blame = 查行 → 谁改的;log = 查提交 → 改了什么。