Skip to main content

git whatchanged 命令手册

git whatchanged 是一个用于查看提交历史及每个提交所更改文件的 Git 命令。虽然它的功能部分被 git log 取代,但在某些场景下仍然有用。

基本语法

git whatchanged [选项]

常用选项

选项 描述
-p 显示每个提交引入的差异(补丁)
--stat 显示更改的统计信息
--name-only 仅显示更改的文件名
--pretty=<格式> 自定义提交信息显示格式
--since=<日期> 显示指定日期之后的提交
--until=<日期> 显示指定日期之前的提交
-n <数量> 限制显示的提交数量
--no-merges 不显示合并提交
-- <路径> 只显示影响指定路径的提交

基本用法

1. 查看完整变更历史

git whatchanged

2. 显示差异内容

git whatchanged -p

3. 查看特定文件的变更历史

git whatchanged -- <文件路径>

4. 显示最近5次提交的变更

git whatchanged -n 5

5. 显示特定日期范围的变更

git whatchanged --since="2023-01-01" --until="2023-12-31"

输出格式说明

典型输出示例:

commit abc1234567890abcdef1234567890abcdef12
Author: John Doe <john@example.com>
Date:   Mon Jan 2 15:04:05 2023 +0800

    Update README.md

:000000 100644 0000000... 789abc1... A  README.md
:100644 100644 abc1234... def5678... M  src/main.c

每行开头的冒号后跟着的文件模式变化:

  • 000000 表示新文件
  • 100644 表示普通文件
  • 100755 表示可执行文件
  • 120000 表示符号链接
  • A 表示添加
  • M 表示修改
  • D 表示删除

git log 的区别

  1. git whatchanged 默认显示每个提交更改的文件列表
  2. git whatchanged 不接受 --graph 等现代选项
  3. git log 更灵活且功能更强大,推荐新用户使用

等效的 git log 命令:

git log --name-status

实际应用示例

1. 查看谁最近修改了特定文件

git whatchanged --pretty="%h %an %ad" -- <文件路径>

2. 生成变更报告

git whatchanged --since="1 month ago" --pretty=format:'%h %s (%an)' --no-merges

3. 检查特定类型的文件变更

git whatchanged -- '*.js' '*.css'

注意事项

  1. 这是一个较老的 Git 命令,主要用于向后兼容
  2. 对于新项目,建议使用 git log 替代
  3. 输出格式在不同 Git 版本中可能略有不同
  4. 不会显示重命名文件的追踪信息

替代命令推荐

大多数情况下,以下 git log 命令可以替代 git whatchanged

git log --name-status
git log --stat
git log --patch
git log --oneline --name-only

git whatchanged 仍然保留在 Git 中主要是为了兼容旧脚本和习惯,新用户应该优先学习使用 git log 的各种选项。