查看Git提交中的更改

查看Git提交中的更改

技术背景

在使用Git进行版本控制时,我们经常需要查看特定提交中的更改内容,以便了解代码的演变、排查问题或进行代码审查。Git提供了多种命令来满足这一需求。

实现步骤

查看特定提交与其父提交的差异

  • 使用 git diff COMMIT~ COMMIT 命令,该命令会显示指定 COMMIT 的父提交与该 COMMIT 之间的差异。
  • 也可以使用 git diff COMMIT^!git diff-tree -p COMMIT 达到类似效果。

查看提交的详细信息及差异

  • 使用 git show COMMIT 命令,它会显示提交的数据,包括差异信息(但不包括合并提交)。若只想关注差异部分,可使用 git show --color --pretty=format:%b COMMIT

查看与当前HEAD的差异

  • 使用 git diff COMMIT 命令,可显示指定 COMMIT 与当前HEAD之间的差异。

查看最近提交的更改

  • 使用 git show 命令,它等价于 git show HEAD,会显示最近一次提交的更改。

查看指定范围提交的更改

  • 使用 git show <beginning_sha> <ending_sha> 命令,可查看两个提交SHA-1哈希值之间的更改。

查看特定提交的文件列表

  • 使用 git show --name-only commit_id 命令,可获取指定提交中更改的文件列表,但该命令对合并提交ID无效。
  • 对于合并提交ID,使用 git log -m -1 --name-only commit_id 命令。

查看提交中特定文件的更改

  • 使用 git show commit_id:src/path/to/that/file 命令。

核心代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 查看特定提交与其父提交的差异
git diff COMMIT~ COMMIT
git diff COMMIT^!
git diff-tree -p COMMIT

# 查看提交的详细信息及差异
git show COMMIT
git show --color --pretty=format:%b COMMIT

# 查看与当前HEAD的差异
git diff COMMIT

# 查看最近提交的更改
git show
git show HEAD

# 查看指定范围提交的更改
git show <beginning_sha> <ending_sha>

# 查看特定提交的文件列表
git show --name-only commit_id
git log -m -1 --name-only commit_id

# 查看提交中特定文件的更改
git show commit_id:src/path/to/that/file

最佳实践

  • 当需要查看某个提交与其父提交的差异时,优先使用 git diff COMMIT~ COMMITgit diff COMMIT^!,这两个命令简洁明了。
  • 若要查看提交的详细信息及差异,使用 git show COMMIT 即可。
  • 对于查看文件列表,根据提交是否为合并提交选择合适的命令。

常见问题

合并提交的差异查看

git show 命令在处理合并提交时不会显示完整的差异信息。可以使用 git whatchanged -m -n 1 -p <SHA-1 hash of merge commit> 命令来查看合并提交引入的更改。

只查看文件列表

若只需要查看更改的文件列表,而不关心具体的更改内容,可以在 git diffgit show 命令后添加 --name-only 选项。例如:git diff <commit_Id_1> <commit_Id_2> --name-only

配置difftool

若使用 git difftool COMMIT^ <commit hash> 命令,需要先配置好difftool。可参考 如何配置difftool 或查看 手册页


查看Git提交中的更改
https://119291.xyz/posts/git-commit-changes-viewing-guide/
作者
ww
发布于
2025年5月15日
许可协议