当我执行gitdiffCOMMIT时,我看到了提交和HEAD之间的变化(据我所知),但我希望看到单个提交所做的变化。

我还没有在diff/log上找到任何明显的选项来提供输出。


当前回答

从git diff(1)的手册页:

git diff [options] [<commit>] [--] [<path>…]
git diff [options] --cached [<commit>] [--] [<path>…]
git diff [options] <commit> <commit> [--] [<path>…]
git diff [options] <blob> <blob>
git diff [options] [--no-index] [--] <path> <path>

使用中间的第三个:

git diff [options] <parent-commit> <commit>

同样从同一手册页底部的示例部分:

$ git diff HEAD^ HEAD      <3>

比较上次提交和上次提交之前的版本。

诚然,它的措辞有点混乱,但也不会那么混乱

将最近的提交与之前的提交进行比较。

其他回答

Use:

git show <commit_sha>

这将向您展示该承诺中的内容。只需在两个提交SHA-1散列之间放置一个空格,就可以完成范围。

git show <beginning_sha> <ending_sha>

如果您经常重新设置基础,这非常有用,因为您的功能日志都是一行的。

如果您想查看最后3次提交,可以使用HEAD语法

git show HEAD~3 HEAD

要查看特定COMMIT哈希的差异,其中COMMIT是提交的哈希:

gitdiffCOMMIT~COMMIT将向您展示COMMIT的祖先和COMMIT之间的区别。有关命令和gitrevisions的详细信息,请参阅gitdiff的手册页。

或者,gitshowCOMMIT也会做类似的事情。(提交的数据,包括其diff,但不包括合并提交的数据。)请参阅gitshow手册页。

(gitdiffCOMMIT也会显示COMMIT和头部之间的区别。)

git difftool COMMIT^ <commit hash>

如果您配置了difftool,也可以使用。

请参阅此处如何配置difftool。或此处的手册页。

此外,您可以使用git diff树--no commit id--name only-r<commit hash>来查看在给定的提交哈希中更改/提交了哪些文件。

要通过提交查看作者和时间,请使用gitshowCOMMIT。这将导致如下情况:

commit 13414df70354678b1b9304ebe4b6d204810f867e
Merge: a2a2894 3a1ba8f
Author: You <you@you.com>
Date:   Fri Jul 24 17:46:42 2015 -0700

     Merge remote-tracking branch 'origin/your-feature'

如果您想查看哪些文件已更改,请使用上面“合并”行中的值运行以下命令:git diff--stat a2a2894 3a1ba8f。

如果要查看实际差异,请运行git-stat a2a2894 3a1ba8f。

对我来说,这很好

git show COMMIT --compact-summary

显示下一个信息

输出扩展头信息的浓缩摘要,例如diffstat中的文件创建或删除(“new”或“gone”,如果是符号链接,可选“+l”)和模式更改(“+x”或“-x”分别用于添加或删除可执行位)。信息放在文件名部分和图形部分之间。暗示--stat。