git blame
逐行显示文件中每一行最后是谁在什么时候修改的
语法
git blame [<options>] [<rev>] [--] <file>
参数
| 参数 | 说明 | 示例 | 级别 |
|---|---|---|---|
-L <start>,<end> |
只显示指定行范围 | |
常用 |
-w |
忽略空白字符变更 | |
常用 |
-C |
检测代码从其他文件复制或移动的情况 | |
常用 |
-e |
显示作者邮箱而非姓名 | |
常用 |
--since <date> |
只显示指定日期之后的修改 | |
常用 |
示例
查看文件每一行的最后修改者
git blame src/utils.js
a1b2c3d (张三 2024-03-15) function formatDate() {
只查看第 10-20 行的修改记录
git blame -L 10,20 src/app.js
忽略空白变更,找到真正的内容修改者
git blame -w src/style.css
追踪代码是否从其他文件复制而来
git blame -C src/newFile.js
配合 log 查看文件的完整变更历史
git log --follow -p -- src/utils.js
技巧
- blame 不是用来「责怪」人的,而是用来理解代码变更的上下文
- 用 -w 忽略格式化变更,找到真正修改逻辑的人
- 发现问题行后用 git show <commit-hash> 查看完整提交
- VS Code 的 GitLens 插件提供了更好的 blame 可视化体验