为了找到 2 个 git 分支的共同祖先,需要执行以下操作:
git merge-base branch another_branch
好的。但是...如果两个分支已经合并怎么办?当我使用merge-base
在这种情况下,我得到的提交是合并之前的最新提交,并且我想知道两个分支“合并之前”出现的共同祖先。
换句话说:
Z - A - B - C - D - E - F
\ /
G - H - I
HEAD
位于 F。如果我做一个git merge-base
在这里,我得到的提交是I
,我要找的是A,或者可能是Z。有没有git指令可以找到它?
如果你这样做
git merge-base C I
你得到了你想要的提交A。 C和I是什么?它们是合并提交 D 的父提交。
你如何得到它们?
git log --pretty=%P -n 1 D
给你两个字符串。这两个字符串是您需要的提交 C 和 I。
如果你想一起做这一切,你可以写
git merge-base $(git log --pretty=%P -n 1 MERGE_COMMIT)
您必须将 MERGE_COMMIT 替换为合并提交 D 的哈希值
编辑:
正如@poke所说,它更简单
git merge-base MERGE_COMMIT^ MERGE_COMMIT^2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)