git whatchanged show
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
的各种选项。
git show
命令手册
git show
是 Git 中一个多功能的命令,用于显示各种 Git 对象(如提交、标签、树和 blob)的详细信息。
基本语法
git show [选项] [<对象>]
常用用法
1. 显示最新提交的详细信息
git show
2. 显示特定提交的详细信息
git show <commit-hash>
git show HEAD~2 # 显示前两次的提交
3. 显示标签指向的内容
git show v1.0.0
4. 显示某次提交中特定文件的更改
git show <commit-hash>:<file-path>
5. 显示分支最新提交
git show <branch-name>
常用选项
选项 | 说明 |
---|---|
--pretty=<格式> |
自定义输出格式 |
--format=<格式> |
同 --pretty |
--name-only |
仅显示更改的文件名 |
--name-status |
显示文件名及更改状态 |
--oneline |
简洁的单行格式 |
-p 或 --patch |
显示差异补丁(默认) |
--no-patch |
不显示差异补丁 |
--stat |
显示更改统计 |
--color |
使用颜色高亮 |
--abbrev-commit |
显示缩写的提交哈希 |
--date=<格式> |
自定义日期格式 |
输出格式控制
1. 预定义格式
git show --pretty=fuller
git show --pretty=short
git show --pretty=medium # 默认格式
git show --pretty=raw
2. 自定义格式
git show --format="%h - %an, %ar : %s"
常用格式占位符:
%H
: 完整提交哈希%h
: 简短提交哈希%an
: 作者名字%ae
: 作者邮箱%ad
: 作者日期%ar
: 相对作者日期%cn
: 提交者名字%ce
: 提交者邮箱%cd
: 提交日期%cr
: 相对提交日期%s
: 提交说明
实际应用示例
1. 查看某次提交的详细修改
git show abc1234
2. 查看标签对应的提交信息
git show v2.1.0 --stat
3. 仅查看某次提交修改了哪些文件
git show abc1234 --name-only
4. 查看文件在特定提交时的内容
git show abc1234:src/main.js
5. 查看分支尖端的提交信息
git show develop --format="%h %s"
高级用法
1. 比较两次提交间的差异
git show commit1..commit2
2. 查看合并提交的父提交差异
git show -m <merge-commit>
3. 查看某次提交中特定文件的差异
git show abc1234 -- path/to/file
4. 查看二进制文件的差异
git show --binary abc1234
注意事项
- 当不指定对象时,默认显示
HEAD
指向的提交 - 可以组合多个选项使用,如
git show --stat --oneline abc1234
- 对于大型仓库,使用
--name-only
或--stat
可以更快查看概览 - 使用
--color-words
可以更清晰地查看单词级别的更改
git show
是一个非常有用的命令,结合不同选项可以灵活地查看 Git 对象的各种信息,是日常 Git 使用中不可或缺的工具。
No Comments