2012-02-29 62 views
0

这里的情景:尽管合并提交,我如何看到干净的git diff?

开发一个正在改变自己的本地仓库,然后使供审查这些变化之前,不会拉,而不是获取和重订,所以他犯包含一个巨大的合并结束他的变化加上自他上次拉动以来对远程存储库所做的更改。

我想取回他的更改,只能看到他更改了

比方说,我们在一个分支叫主的工作,并从他的仓库提取后,我这样做:

git的差异主德瓦/主

我会看到一个巨大的混乱的差异,做实际上并不代表分支之间的差异 - 我看到了合并提交中的所有文件,其中大部分文件实际上并不相同。

所以,我怎么得到的正是开发商A实际上改变了干净的差异,并在那里为我清理东西了,以至于当我合并了他的变化,合并提交消失的方式,我有一个干净的历史?

回答

1

你想git diff master...deva/master,根据git diff的手册页是git diff $(git merge-base master deva/master) deva/master,或您的分支点分歧点和“他的”分支点之间的差异。

当然,从某种意义上说,git diff master deva/master输出实际上是“他改变了什么”,因为它是你现在的HEAD和他之间的区别......它并不是说谎。

从技术上讲,如果他们是“他”合并的其他分支的一部分,这仍然可以包括“他没有改变”的事物。如果你想排除这些提交,你将不得不通过并生成组合差异。

+0

但是,这样做还是不会让我看到合并提交中的文件,因为我一直回到共同的祖先,它缺少那些提交? – 2012-03-01 01:30:26

+0

@EricZBeard如果你想跳过一次提交,你将不得不去差异跳跃。 – Borealid 2012-03-01 01:43:54