2013-04-10 100 views
1

我已经拉和合并的代码。两个GIT历史(或SHA哈希/提交)之间的实际差异

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

不幸的是,以下所有的还显示被其他开发商进行(这些变化已经前段时间拉)的变化

 
git diff origin/ContactList...ContactList 
git diff origin/ContactList..ContactList 
git diff origin/ContactList...HEAD 
git diff origin/ContactList..HEAD 

换句话说,我已经克隆了回购。我在开发过程中拉了(我确实想要更新)。现在,我只想看到我的更改。

P.S:我没有创造另一个分支

回答

3

git diff显示你问它来显示,这是两次提交你给它的区别是什么。

要了解如何查看“只有您自己的更改”,您必须了解上游更改进入合并历史中的哪个位置。在以某种图形表示方式查看历史记录时,可以轻松完成此操作。通过使用gitkgit log --graph --oneline --decorate或其他您喜欢的历史浏览器。

假设你已经在发展的两条平行线(你和上游)是合并一个“简单”的情况下,你的历史将是这个样子:

... <- A <- B <- U1 <- U2 <- ... <- Un <-+- C <-- D <-- .... 
      ^       | 
      `--- Y1 <- Y2 <- ... <- Ym <-' 

在此表示,箭头从去孩子向父母承诺,所以左侧是较旧的承诺,而右侧是较新的承诺。 (您的分支小费位于C的右侧)。 U*提交代表上游更改,Y*提交您自己的提交,但这并不相关。

用于这些提交的名称是符号;实际上在repo中调用diff时,您需要使用实际的ref名称(标签或分支,如果它们存在于正确的位置,或者否则执行SHA)。

要查看所发生的合并(该Y*提交)你自己的一部分所有累积的变化,你可以使用

git diff B Ym 

也就是说,合并基础之间的差异(最后的共同承诺)和您最近提交合并前

你尝试过包括实际合并提交的方式(C在这个例子中),其中已经包含了所有的上游更改,因为该点的合并已经发生了(这实际上是一种合并的点提交)。

合并之前和合并之后某处的差异(包括合并提交)将包含合并两侧的所有更改。

+1

好答案!我还建议OP不要使用带“git diff”的“..”和“...”sytnax:这些点已经被添加来使'git diff'的操作类似于'git log',但是这种相似性是误导性的与后者相反,'git diff'总是只对两个版本进行操作,而不是对它们的范围(这些点表示)。所以使用'git diff ONE TWO'总是更清晰。正如Nevik正确地指出的那样,'git diff'只是在文本上比较两个修订版,因此不知道“我们”的更改。 – kostix 2013-04-10 15:32:57

+0

非常感谢你:) – 2013-04-14 17:29:38

相关问题