1

我已经提取并合并了代码。

我想查看将应用于代码的更改。

不幸的是,以下所有内容都显示了其他开发人员执行的更改(这些更改已在一段时间前撤消)

git diff origin/ContactList...ContactList
git diff origin/ContactList..ContactList
git diff 来源/联系人列表...HEAD
git diff origin/ContactList..HEAD

换句话说,我已经克隆了 repo。我在开发过程中拉过(我确实想保持最新)。现在,我只想查看我的更改。

PS:我没有创建另一个分支

4

1 回答 1

4

git diff准确地向您显示您要求它显示的内容,这是您给它的两次提交之间的差异。

要了解如何查看“仅您自己的更改”,您必须了解上游更改在合并历史中的哪个位置。这在以某种图形表示查看您的历史时很容易做到,例如使用gitkor 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在此示例中),它已经包含所有上游更改,因为此时合并已经发生(这实际上是合并提交的点)。

因此,合并前某处和合并后某处(包括合并提交)的差异将包括合并双方的所有更改。

于 2013-04-10T15:29:00.927 回答