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 -- <文件路径>

例如,比较某文件在 abc123def456 两个提交之间的差异:

git diff abc123 def456 -- config.yml

也可以只比较某个文件在上一次提交与当前工作区之间的变化:

git diff HEAD -- <文件路径>