如何找到两个分支之间的前一个 merge 提交?
我想查看自上次将发布分支 merge 到主分支以来我的主分支中的更改。要查看发布分支自上一个分支以来的变化,就像 git diff ...release
但显然 git diff release...
不起作用,因为它还包含了最后一次 merge 之前的所有更改。因此我认为我需要最后一次 merge 的提交 ID 将其传递给 git diff
git log --reverse --ancestry-path `git merge-base HEAD release`.. \
--format=format:%H|head -n1
似乎可以工作并且可以与 git diff $(...)
一起使用,但它看起来非常复杂。有没有更简单的解决方案?
示例
I
/ \
A1 B1
\ |
| M
| |
A2 B2
此处 I
是初始提交。 A[12]
是发布提交,B[12]
是主提交。 M
是之前的提交。在示例中,最后一次 merge 和 master 之间的变化只是 B2 引入的变化。 git merge-base A2 B2
返回 A
1。 git diff B2 A1
包含了 B1
的变化。因此,问题是如何在一般更复杂的情况下找到 M,以便可以运行 git diff M B2
而不必手动找到 M
。
最佳答案
看来你要找的是两个分支开始不同的点,而不是两个分支之间的最后一次 merge 。这两个概念是不同的,因为你的发布分支可能在 merge 后的某个时间快进了。
git merge-base master release
将找到您的 master 和 release 分支的最近共同祖先(即两者共同的最后一次提交)。
然后,在 master 上,您可以使用 git diff [common ancestor] HEAD
查看自共同祖先以来对 master 所做的更改。
关于git - 如何找到以前的 merge 提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10525695/