如何查看 Git 提交中的更改?

当我执行git diff COMMIT我看到该提交和 HEAD 之间的更改(据我所知),但是我希望看到该单个提交所做的更改。

我在diff / log上没有发现任何明显的选项可以为我提供输出。

答案

要查看特定COMMIT哈希的差异:

git diff COMMIT~ COMMIT将向您显示该COMMIT的祖先和COMMIT之间的区别。有关命令的详细信息,请参见git diff的手册页,以及~表示法及其朋友的gitrevisions

另外, git show COMMIT也会做类似的事情。 (提交的数据,包括其 diff - 但不包括合并提交。)请参见git show manpage

如 “ 与父代提交 git commit 的差异的简写? ” 中所述,您还可以将git diff与以下内容一起使用:

git diff COMMIT^!

要么

git diff-tree -p COMMIT

使用 git show 时,您将需要(为了仅关注 diff)执行以下操作:

git show --color --pretty=format:%b $COMMIT

COMMIT参数是一个commit-ish

commit 对象或一个对象可以被递归地解除引用到一个提交对象。以下是所有提交 - ishes:提交对象, 标签对象是指向一个 commit 对象,标签对象指向一个标签对象指向一个 commit 对象,等等。

请参阅gitrevision“指定版本”以引用提交。
另请参见 “ 树状结构在 Git 中是什么意思? ”。

您也可以尝试以下简单方法:

git show <COMMIT>

git show显示最近一次提交中所做的更改。

等效于git show HEAD

git show HEAD~1使您返回 1 次提交。

首先使用来获取提交 ID,

git log #to list all

要么

git log -p -1 #last one commit id

复制提交 ID。

现在,我们使用两种方法来列出特定提交的更改,

方法 1:

git diff commit_id^! #commit id something like this 1c6a6000asad012

方法 2:

git show commit_id
For example: git show 1c6a600a

我通常这样做:

git diff HEAD~1

显示有关最后一次提交的更改。如果您有更多提交,只需将数字 1 增加到要查看的提交差异数即可。

git show <commit_sha>

这将向您显示该提交中的内容。我认为您可以通过在两个提交阴影之间放置一个空格来进行调整。

git show <beginning_sha> <ending_sha>

如果您经常重新定基,这将非常有用,因为功能日志将全部排成一行。

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>

比较最后一次提交和最后一次提交之前的版本。

诚然,它的措词有些混乱,它不会像

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

以下似乎可以完成工作;我用它来显示合并带来了什么。

git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>

另一种可能性:

git log -p COMMIT -1