Skip to main content

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 的区别

  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 的各种选项。

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

注意事项

  1. 当不指定对象时,默认显示 HEAD 指向的提交
  2. 可以组合多个选项使用,如 git show --stat --oneline abc1234
  3. 对于大型仓库,使用 --name-only--stat 可以更快查看概览
  4. 使用 --color-words 可以更清晰地查看单词级别的更改

git show 是一个非常有用的命令,结合不同选项可以灵活地查看 Git 对象的各种信息,是日常 Git 使用中不可或缺的工具。