git识别最近两个分支的交集

时间:2011-01-25 03:53:43

标签: git

是否有用于识别两个分支共同的最后一次提交的简写? 例如,如果我有master,然后topic1从master拆分,他们都继续

master:
a------b------c------d
        \
topic1:  r------s------t

有没有办法识别说b
例如,如果存在master#topic1(与topic1 #master相同)这样的事情,那就是“master和topic共享的最新提交。”

我希望能够:

$ git checkout topic1
$ git diff master#topic1..topic1

我知道我能做到:

git diff master..topic

但我不关心提交cd

2 个答案:

答案 0 :(得分:7)

您实际问的问题的答案:

git diff master...topic

注意三个点。

从联系手册:

  

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

     

此表单用于查看包含和最多为第二个的分支上的更改,从<commit>的共同祖先开始。 git diff A...B相当于git diff $(git merge-base A B) B。您可以省略<commit>中的任何一个,其效果与使用HEAD相同。

答案 1 :(得分:6)

使用git merge-base

NAME
git-merge-base - Find as good common ancestors as possible for a merge

SYNOPSIS
git merge-base [-a|--all] [--octopus] <commit> <commit>…
git merge-base --independent <commit>…