Git:显示分支之间的差异,忽略合并的提交

8

我的代码库历史记录大致如下:

         x---y-+-z-+-branch
        /     /   /
---a---b---c-+-d-+-e---master

我希望获得一个单一的差异(即像“git diff”输出的那样-我不想要“git log -p”产生的一堆差异),“branch”的完整历史记录,而不包括从“master”合并到“branch”的任何更改。如何做到这一点?

不是真正的答案,但也许是一个方向:我认为仅使用git工具是不可能的。你可以进行一些疯狂的shell编程来实现这个目标。一个好的起点是:显示所有仅在你的分支中的提交SHA:git log branch_name --not master --no-merges --pretty="format:%H" - ben
1个回答

7
您需要的命令是:

你要查找的命令是:

git diff master...branch

git help diff中得知:

git diff [--options] <commit>...<commit>

This form is to view the changes on the branch containing and up to the second


1
“…从两个<commit>的共同祖先开始” - 这是否意味着它只会提供自上次将'master'合并到'branch'以来更改的差异,而不是整个'branch'的历史记录? - spiffytech
你尝试过这个命令吗?它将会对比你的绘图中的'd'和'branch'。这将展示自从你创建了'b'分支以来,所有只在'branch'上发生的更改。 - Chronial
确实,这个命令展示了我所需要的内容。不过,鉴于上面命令帮助部分的片段,我不太清楚原因。 - spiffytech
你到底有什么困惑?或者根据你的理解,描述一下这个命令应该做什么。 - Chronial
1
根据文档所述,该命令显示与共同祖先的差异。鉴于上面的图表,我预期差异仅显示自上次将“master”合并到“branch”以来的更改,因为在此之前,“master”的所有提交都是“branch”的公共提交。在这里,这将是一个空差异。打字时(耶!橡皮鸭编程!),我现在意识到该命令有效是因为虽然“master”的提交现在在“branch”上,但“branch”的提交不在“master”上。如果我首先将“branch”合并到“master”,然后反过来,那么应该是差异开始的新共同祖先,对吗? - spiffytech
显示剩余2条评论

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