HOWTO · Git

Git の 2つのブランチの最近の共通の祖先を特定する

Git の 2つのブランチの最近の共通祖先コミットを見つけることができます。

この記事では、Git で最近の共通祖先コミットを見つける方法を説明します。 これは、ブランチを作成したり、別のブランチにマージしたりするときに便利です。

早速、今日の議題に入りましょう。

Git の 2つのブランチの最近の共通の祖先を特定する

Git の 2つのブランチの共通の祖先は何ですか?

下の画像を見てください。

2つのブランチの共通の祖先

上の画像では、feature ブランチを作成した main ブランチと、feature ブランチからの new feature ブランチがあります。 main ブランチをやめて、featurenew-feature ブランチに注目しましょう。

bd9172c コミットの後に new-feature ブランチを作成したことがわかります。 ご想像のとおり、bd9172c コミットは、feature ブランチと main ブランチの最近の共通の祖先です。

では、2つの分岐の最近の共通の祖先をどのように見つけるのでしょうか?

必要なのは git merge-base コマンドだけです。 Git のドキュメントによると、git merge-base コマンドは、git merge の最適な共通祖先を見つけるのに役立ちます。

ただし、引数として 2つのブランチをフィードして、提供されたブランチの最新の共通の祖先を表示できます。

構文:

$ git merge-base <Branch 1> <Branch 2>

例を見てみましょう。

以下の例は、ローカル リポジトリの master および feature ブランチを示しています。 2つの間の共通の祖先を見つけるために、以下に示すように git merge-base コマンドを実行します。

$ git merge-base master feature

このコマンドは、共通の祖先のコミット ハッシュを表示する必要があります。

出力:

git マージ ベース

視覚的なログには、以下のコマンドを使用できます。

$ git log --graph --oneline --all --decorate

次のようなものを取得する必要があります。

ビジュアル ログ

feature ブランチが master から 2dbe38d コミットで分岐したことがわかります。これは、前に git merge-base コマンドを実行して取得したコミット ハッシュと同じです。

Git の 2つのブランチの最新の共通祖先コミットを見つけるには、手元のブランチをフィードしながら git merge-base コマンドを使用します。 このコマンドは、最新の共通祖先のみを取得することに注意してください。