在Git diff中忽略合并操作

5

我想要从一个标签进行git diff,该标签忽略了他的分支中的合并记录。 让我们用一个简单的例子来解释一下我想要什么。

#                               ~+A                             git diff running here                                                                                                                                                                       
#Branch B ______________________|_____________________________________|                                                                                                                                                                                                                                     
#                       |       ^           |       |                                                                                                                                                                           
#                       +Z      |           +Y      |                                                                                                                                                                                   
#                       tag1    |merge A            Merge B                                                                                                                                                                             
#                               |in B               |in A                                                                                                                                                                                           
#                               |                   |                                                                                                                                                                                   
#Branch A ______________________|___________________v_____________________                                                                                                                                                                                                                                          
#               |                                   |                                                                                                                                                                                                                       
#               +A                                  ~+Z                                     

在这种情况下,我希望能够在标签1之前,获取分支B中的差异。
git diff tag1 

这个问题在git diff中会有体现。
+A
+Y

我只想要+Y,因为我希望我的git diff忽略A在B中的合并。即使我在B分支中创建了一个临时分支,这个解决方案似乎也不起作用,因为我将A合并到B中,然后又将B合并到A中。如果您遇到过这个问题或者有好的解决方法,请告诉我。

1
我在你的图表中没有看到tag1。 - Barend
我刚刚添加了它。它已经与提交+Z一起了。 - stephanec
1个回答

2
您可以使用git-log(1)--first-parent--no-merges标志到达那里:

命令:

user@machine$ git log --no-merges --first-parent --patch-with-stat tag1..HEAD

输出:

commit cff05df7d5a91d555c8c848b71a384b5048aa8f8
Author: Barend <email hidden>
Date:   Fri Oct 9 21:15:25 2015 +0200

    Y message
---
 Y | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

谢谢你的解决方案。它实际上运行良好。唯一的问题是,我需要使用 git diff 因为我不想拥有所有提交历史。我只想知道什么是新的。如果没有其他解决方案,我将尝试运行一个脚本将这个 git log 转换成 git diff。在这种情况下,你的解决方案对我来说真的非常有帮助 :) - stephanec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接