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
的区别
git whatchanged
默认显示每个提交更改的文件列表git whatchanged
不接受--graph
等现代选项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'
注意事项
- 这是一个较老的 Git 命令,主要用于向后兼容
- 对于新项目,建议使用
git log
替代 - 输出格式在不同 Git 版本中可能略有不同
- 不会显示重命名文件的追踪信息
替代命令推荐
大多数情况下,以下 git log
命令可以替代 git whatchanged
:
git log --name-status
git log --stat
git log --patch
git log --oneline --name-only
git whatchanged
仍然保留在 Git 中主要是为了兼容旧脚本和习惯,新用户应该优先学习使用 git log
的各种选项。