如何找到两个Git分支的最近的共同祖先?


当前回答

使用gitk,你可以以图形方式查看这两个分支:

gitk branch1 branch2

然后就很容易在这两个分支的历史中找到共同的祖先。

其他回答

Git差异控制…功能

显示当前(可能是多次提交)特性分支的所有新提交。

Man git-diff记录了:

git diff A...B

等于:

git diff $(git merge-base A B) B

但是…更容易打字和记忆。

正如Dave提到的,HEAD的特殊情况可以省略。所以:

git diff master...HEAD

等于:

git diff master...

如果当前分支是feature,这就足够了。

最后,记住顺序很重要!做git差异功能…Master将显示在Master上而不是在特性上的更改。

我希望更多的git命令能支持这种语法,但我不认为他们能做到。有些甚至对…有不同的语义。: Git的提交范围中,双点“..”和三点“…”有什么区别?

您正在寻找git merge-base。用法:

$ git merge-base branch2 branch3
050dc022f3a65bdc78d97e2b1ac9b595a924c3f2

找到所有分支的共同祖先

git merge-base $(git branch --format "%(refname)")

使用gitk,你可以以图形方式查看这两个分支:

gitk branch1 branch2

然后就很容易在这两个分支的历史中找到共同的祖先。

git checkout myRep
git pull origin main --allow-unrelated-histories
git push origin myRep