查看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 |
|
最佳实践
- 当需要查看某个提交与其父提交的差异时,优先使用
git diff COMMIT~ COMMIT
或git diff COMMIT^!
,这两个命令简洁明了。 - 若要查看提交的详细信息及差异,使用
git show COMMIT
即可。 - 对于查看文件列表,根据提交是否为合并提交选择合适的命令。
常见问题
合并提交的差异查看
git show
命令在处理合并提交时不会显示完整的差异信息。可以使用 git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>
命令来查看合并提交引入的更改。
只查看文件列表
若只需要查看更改的文件列表,而不关心具体的更改内容,可以在 git diff
或 git 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/