当我执行git diff COMMIT
命令时,我看到的是该提交和HEAD之间的更改(就我所知),但我想要查看单个提交所做的更改。
我没有在diff
/log
上找到任何明显的选项可以给我这个输出。
当我执行git diff COMMIT
命令时,我看到的是该提交和HEAD之间的更改(就我所知),但我想要查看单个提交所做的更改。
我没有在diff
/log
上找到任何明显的选项可以给我这个输出。
要查看特定COMMIT
哈希的差异,其中COMMIT
是提交的哈希:
git diff COMMIT~ COMMIT
将显示该COMMIT
的祖先与COMMIT
之间的差异。有关命令的详细信息,请参见git diff的手册页面,有关~
符号及其相关内容的详细信息,请参见gitrevisions。
或者,git show COMMIT
也会做类似的事情(包括提交的数据和它的差异,但不适用于合并提交)。请参见git show手册页面。
(另外,git diff COMMIT
将显示该COMMIT
与当前HEAD的差异。)
|
的同义词)以及 rc
及其派生版本(脱字符运算符),以及启用了扩展 glob 的 zsh
中,需要对 ^
进行引用(not
globbing operator)。 - Stephane ChazelasHEAD^
表示第一个父提交,如果提交具有多个父提交(即合并提交)。 - Mansourgit diff COMMIT~ COMMIT
对我有效,注意使用波浪线而不是插入符号。我在Windows 10上运行git版本2.6.1.windows.1。 - Juuso Ohtonen如 "Shorthand for diff of git commit with its parent?" 所提到的那样,您也可以使用 git diff
与以下内容一起使用:
git diff COMMIT^!
或者
git diff-tree -p COMMIT
git show --color --pretty=format:%b COMMIT
COMMIT
参数是一个commit-ish:
一个commit object或可以递归解引用为提交对象的object。以下都是提交对象:提交对象、指向提交对象的tag object、指向指向提交对象的标签对象的标签对象等。
请参见gitrevision "SPECIFYING REVISIONS"以引用提交对象。
另请参见“What does tree-ish mean in Git?”。
您还可以尝试这种简单的方法:
git show <COMMIT>
git show c411d33e
显示提交消息和文件更改,而 git diff c411d33e~ c411d33e
只显示文件更改。在这两种情况下,所显示的文件更改都是自提交祖先以来的。 - PatSgit show <COMMIT> --diff-merges=on
。 - c zgit show
会展示最近一次提交所做的更改。它等同于git show HEAD
。
git show HEAD~1
会回到上一个提交。
我通常做:
git diff HEAD~1
显示关于上次提交的更改。如果您有更多的提交,请将数字1增加到您想要查看的提交diff数量。
git show
命令即可 ;) - xeruf使用:
git show <commit_sha>
这将向您展示该提交中的所有内容。您可以通过在两个提交SHA-1哈希之间放置一个空格来执行范围。
git show <beginning_sha> <ending_sha>
如果您经常进行变基操作,那么这非常有帮助,因为您的特性日志将全部在一行中。
如果您想查看最近的3个提交,则可以使用HEAD语法。
git show HEAD~3 HEAD
HEAD〜3
呢? - Peter Mortensengit show HEAD~3 HEAD
这样的命令。虽然比其他 git 命令有点笨重,但它能够正常工作。 - Iwnnay对我来说这很有效
git show COMMIT --compact-summary
显示下一个信息
在diffstat中输出扩展头信息的简要总结,例如文件创建或删除(“new”或“gone”),可选地带有符号链接的“+l”,以及更改模式的(“+x”或“-x”分别添加或删除可执行位)。 该信息放置在文件名部分和图形部分之间。 意味着--stat。
首先使用以下命令获取提交ID:
git log #to list all
git log -p -1 #last one commit id
复制提交ID。
现在我们使用两种方法来列出特定提交的更改,
方法1:
git diff commit_id^! # 提交ID类似于1c6a6000asad012
方法2:
git show commit_id
For example: git show 1c6a600a
来自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 diff HEAD HEAD^
。 - Richardgit diff "HEAD^" HEAD
,这个命令对我有用。 - MartenBE以下代码似乎可以完成任务;我使用它来展示合并所带来的变化。
git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>
git log
也可以这样做吗?(因为 https://dev59.com/5Gkw5IYBdhLWcg3wQoSm#18585297) - VonC显示每个提交引入的提交日志和差异输出。
鼓励新用户使用git-log(1)代替。whatchanged命令与git-log(1)基本相同,但默认显示原始格式的差异输出并跳过合并。该命令主要是出于历史原因而保留的;许多在git log被发明之前通过阅读Linux内核邮件列表学习Git的人们的手指都习惯于输入它。 - Kesavan Muthuvel