如何找到两个分支之间的先前合并提交?
自从上次将发布分支合并到主分支以来,我希望看到我的主分支中的更改.要查看自上一个分支以来发布分支中的更改,它就像一样简单git diff ...release
但显然git diff release...不起作用,因为它还包括上次合并之前的所有更改.因此,我认为我需要将最后一次合并的提交ID传递给它git diff
git log --reverse --ancestry-path `git merge-base HEAD release`.. \
--format=format:%H|head -n1
Run Code Online (Sandbox Code Playgroud)
似乎工作,可以使用git diff $(...),但它似乎非常复杂.有更简单的解决方案吗?
例
I
/ \
A1 B1
\ |
| M
| |
A2 B2
Run Code Online (Sandbox Code Playgroud)
这I是最初的提交.A[12]是发布提交,B[12]是主提交.M是先前的提交.在示例中,最后一次合并和主控之间的更改只是B2引入的更改.git merge-base A2 B2返回A1.并git diff B2 A1包括更改B1.因此,问题是如何在一般更复杂的情况下找到M,以便人们可以在git diff M B2不必手动查找的情况下运行M.
看起来你正在寻找的是两个分支开始不同的点,而不是两个分支之间的最后一个合并.这两个概念是不同的,因为您的发布分支可能在合并后的某个时间被快速转发.
git merge-base master release 将找到你的master和release分支的最新共同祖先(即两者共同的最后一次提交).
然后,在master上,您可以使用它git diff [common ancestor] HEAD来查看自共同祖先以来对master进行的更改.
这将显示分支 foo 和分支 master 之间的最新合并提交
git log foo master --oneline --date-order --merges -1
--oneline is just to keep the output short
--date-order to get the latest first
--merges to only show merge commits
-1 to display the first result only
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2369 次 |
| 最近记录: |