如何让git diff只显示两次提交之间的差异,而不包括中间的其他提交?


当前回答

美元git日志

commit-1(new/latest/recent commit)
commit-2
commit-3
commit-4
*
*
commit-n(first commit)

$git diff commit-2

显示commit-2到commit-1之间的所有变化(仅仅是commit-1的补丁,相当于git diff HEAD~1 HEAD)

类似的 $git diff commit-4 commit-1

显示commit-4到commit-1之间的所有更改(commit-1的补丁, 一起提交2号和3号。相当于git差头~3头)

$git diff commit-1 commit-2

通过改变订单提交ID,可以获得恢复补丁。 ("$git diff commit-1 commit-2 > revert_patch_of_commit-1.diff")

其他回答

我的别名设置在~/。git的Bashrc文件:

alias gdca='git diff --cached' # diff between your staged file and the last commit
alias gdcc='git diff HEAD{,^}' # diff between your latest two commits

你可以简单地将2个提交传递给git diff,就像这样:

-> git diff 0da94be  59ff30c > my.patch
-> git apply my.patch

假设您想查看提交012345和abcdef之间的差异。以下内容可以达到你的目的:

$ git checkout 012345
$ git cherry-pick -n abcdef
$ git diff --cached

美元git日志

commit-1(new/latest/recent commit)
commit-2
commit-3
commit-4
*
*
commit-n(first commit)

$git diff commit-2

显示commit-2到commit-1之间的所有变化(仅仅是commit-1的补丁,相当于git diff HEAD~1 HEAD)

类似的 $git diff commit-4 commit-1

显示commit-4到commit-1之间的所有更改(commit-1的补丁, 一起提交2号和3号。相当于git差头~3头)

$git diff commit-1 commit-2

通过改变订单提交ID,可以获得恢复补丁。 ("$git diff commit-1 commit-2 > revert_patch_of_commit-1.diff")

让我来介绍一个简单的GUI/傻瓜证明方法,你可以在这些情况下采取。

克隆另一个副本到新文件夹,例如myRepo_temp 签出您想要与原始回购(myRepo_original)中的提交进行比较的提交/分支。 现在你可以使用不同的工具,(如超越比较等)与这两个文件夹(myRepo_temp和myRepo_original)

这是有用的,例如,如果你想部分逆转一些更改,因为你可以复制东西从一个文件夹到另一个文件夹。