除了组合差分(此处不使用)之外,
git diff
严格比较两个
快照
.
一
使用的语法
git diff A B
VS
git diff A..B
_Git提取快照A,提取快照B,并比较这两个快照。您使用的任何标志选项,例如
--check
,应用于此特定比较。提交
A
不必是…的祖先
B
反之亦然;Git不查看这两个提交之间的任何提交;它只是提取
一
然后提取
乙
和那些不同。
二
这个
git log
命令做了一些非常不同的事情:它
浏览修订图
. 鉴于
git log A..B
,Git查找所有提交
乙
那不是
可到达的
一
Think Like (a) Git
.
注意使用时
-p
具有
GIT日志
要将提交视为修补程序,
GIT日志
将每个提交与它的(单个)父级进行比较。如果在
A..B
例如,范围,
git log -p A..B
第一次演出
乙
git diff B^ B
B^
并运行
git diff B^^ B^
最后一场演出
B^^
并运行
git diff B^^^ B^^
. (这假设范围内没有合并提交,但是
GIT日志
默认情况下忽略合并提交的修补程序。)
一
要查看组合差异,请使用
git show
在合并提交时。这个
差异比较
命令还将生成具有某些特定参数的组合diff,有时不正确:特别是
三
-点语法,
git diff A...B
,用于比较
一
和
乙
提交
乙
但有时会做一些不同的事情。另外,当您使用索引并且该索引包含冲突合并时,
差异比较
将产生组合差异。
二
从技术上讲,它甚至不需要提取这两个快照,它只是直接从树对象中工作。为了计算差异,它必须提取不同的斑点。对于相同的斑点,
差异比较
知道它们是相同的,因为它们的散列ID匹配。但这很容易解释为“提取和比较”。