git diff
准确地向您显示您要求它显示的内容,这是您给它的两次提交之间的差异。
要了解如何查看“仅您自己的更改”,您必须了解上游更改在合并历史中的哪个位置。这在以某种图形表示查看您的历史时很容易做到,例如使用gitk
or git log --graph --oneline --decorate
, 或您喜欢的其他一些历史浏览器。
假设您有一个“简单”的情况,其中两条平行的开发线(您的和上游的)合并,您的历史将如下所示:
... <- A <- B <- U1 <- U2 <- ... <- Un <-+- C <-- D <-- ....
^ |
`--- Y1 <- Y2 <- ... <- Ym <-'
在此表示中,箭头从子提交到其父提交,因此左侧是较旧的提交,右侧是较新的提交。(您的分支提示位于 C 右侧的某处)。U*
提交代表上游更改和您自己的提交Y*
,尽管这不是很相关。
这些提交使用的名称是象征性的;在您的存储库中实际调用差异时,您将需要使用实际的引用名称(标签或分支,如果它们存在于正确的位置,否则提交 SHA)。
要查看在您自己的合并部分(提交)中发生的所有累积更改Y*
,您可以使用
git diff B Ym
也就是说,合并基础(最后一次常见提交)和您在合并之前的最新提交之间的差异。
您尝试它的方式包括实际的合并提交(C
在此示例中),它已经包含所有上游更改,因为此时合并已经发生(这实际上是合并提交的点)。
因此,合并前某处和合并后某处(包括合并提交)的差异将包括合并双方的所有更改。