尽管合并提交,我如何看到干净的git diff?

时间:2012-02-29 22:40:03

标签: git

以下是该方案:

开发人员A正在对他的本地存储库进行更改,然后在使这些更改可供审阅之前,执行拉取而不是获取和重新绑定,因此他最终得到一个包含其更改的巨大合并提交以及对其所做的更改自从他最后一次拉动以来的远程存储库。

我想获取他的更改,只看他改变了什么

假设我们正在开发一个名为master的分支,从他的存储库中取出后,我这样做:

git diff master deva / master

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

那么,我如何得到一个干净的差异,只是开发人员A实际改变了什么,有没有办法让我清理,以便当我合并他的更改时,合并提交消失,我有一个干净的历史记录?

1 个答案:

答案 0 :(得分:1)

您希望git diff master...deva/master根据git diff的手册页与git diff $(git merge-base master deva/master) deva/master相同,或者您的分支分歧点与“他的”的尖端之间的差异分支。

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

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