1020

2つのGitブランチの最新の共通祖先を見つける方法は?

4

4 に答える 4

1263

あなたが探しているgit merge-base。使用法:

$ git merge-base branch2 branch3
050dc022f3a65bdc78d97e2b1ac9b595a924c3f2
于 2009-10-10T21:47:38.127 に答える
64

git diff master...feature

現在の(場合によってはマルチコミット)機能ブランチのすべての新しいコミットを表示します。

man git-diff次のような文書:

git diff A...B

と同じです:

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

ただし、...入力して覚える方が簡単です。

デイブが述べたように、の特殊なケースはHEAD省略できます。それで:

git diff master...HEAD

と同じです:

git diff master...

現在のブランチが。の場合はこれで十分ですfeature

最後に、順序が重要であることを忘れないでください!実行すると、オンになっていないgit diff feature...master変更が表示されます。masterfeature

より多くのgitコマンドがその構文をサポートすることを望みますが、サポートするとは思いません。また、セマンティクスが異なるものもあり...ます。Gitコミット範囲のダブルドット「..」とトリプルドット「...」の違いは何ですか?

于 2016-07-18T12:39:48.233 に答える
45

前の回答で述べたように、git merge-base機能しますが、

$ git merge-base myfeature develop
050dc022f3a65bdc78d97e2b1ac9b595a924c3f2

myfeatureが現在のブランチである場合、一般的なように、次を使用できます--fork-point

$ git merge-base --fork-point develop
050dc022f3a65bdc78d97e2b1ac9b595a924c3f2

この引数は、十分に新しいバージョンのgitでのみ機能します。残念ながら、常に機能するとは限りません。理由は明らかではありません。この回答の最後に記載されている制限を参照してください。


完全なコミット情報については、以下を考慮してください。

$ git log -1 $(git merge-base --fork-point develop) 
于 2017-02-09T17:23:59.497 に答える
13

これによりgitk、2つのブランチをグラフィカルに表示できます。

gitk branch1 branch2

そして、2つのブランチの歴史の中で共通の祖先を見つけるのは簡単です。

于 2017-02-08T17:52:06.540 に答える