Git 查看某个文件的修改历史
FreeGuideOnline
最新
2026-07-06
bash git log -- <文件路径>
这将以时间倒序展示所有影响该文件的提交,包含提交哈希、作者、日期和提交信息。
**示例:**
```bash
git log -- src/App.js
显示每次提交的差异
如果你不仅想看提交记录,还想知道具体改了什么,可以加上 -p 参数:
git log -p -- <文件路径>
这样会输出每次提交对该文件造成的完整差异(diff),包括修改的行和上下文。
格式化输出,突出重点
有时候提交信息太多,可以自定义日志格式,只显示最核心的信息:
git log --pretty=format:"%h - %an, %ar : %s" -- <文件路径>
这个命令会输出简洁的一行:简短哈希 - 作者,相对日期 : 提交说明。
常用占位符:
%h:简短提交哈希%an:作者名字%ar:相对作者日期%s:提交说明
结合时间或数量限制
当文件历史很长时,可以限制输出数量:
- 只显示最近 5 次提交:
git log -5 -- <文件路径> - 显示某个时间点之后的提交:
git log --since="2024-01-01" -- <文件路径> - 显示某个时间点之前的提交:
git log --until="2024-06-01" -- <文件路径>
使用 git log 查看文件的历史重命名
如果一个文件被重命名过,默认的 git log 可能只会显示重命名之后的记录。要查看包括重命名前的完整历史,需要添加 --follow 参数:
git log --follow -- <当前文件路径>
--follow 会让 Git 在历史中自动追踪文件的移动或重命名,串联起整个生命周期。
注意: --follow 只能用于单个文件,不支持同时查看多个文件。
使用 git blame 追踪代码的每一行
当你想知道某一行的修改负责人和具体提交时,git blame 是最佳工具。它会逐行显示文件的每一行最后一次修改的提交哈希、作者和时间。
基本使用
git blame <文件路径>
输出格式示例:
09a7b1c2 (张三 2024-05-12 09:23:15 +0800 32) const name = 'hello';
显示指定行范围
只查看某几行(例如第 10 行到第 20 行)的追溯信息:
git blame -L 10,20 <文件路径>
忽略空白修改
有时代码只是缩进或空格变化,这也会产生修改记录。为避免干扰,可以忽略空格差异:
git blame -w <文件路径>
显示更易读的输出
可以结合其他参数让输出更友好:
git blame --date=short -L 10,20 <文件路径>
--date=short仅显示日期(如 2024-05-12)-s会隐藏作者名称和时间,只显示提交哈希
使用 git diff 比较文件在不同版本间的变化
如果你想对比文件在两个特定的提交之间的变化,而不是看整个历史,使用 git diff。
git diff 提交A 提交B -- <文件路径>
例如,比较某文件在 abc123 和 def456 两个提交之间的差异:
git diff abc123 def456 -- config.yml
也可以只比较某个文件在上一次提交与当前工作区之间的变化:
git diff HEAD -- <文件路径>