Git チェリーピックの画像

Git のチェリーピック

git cherry-pick は任意の Git コミットを参照できるようにするとともに、現在作業中の HEAD にそのコミットを追加できる強力なコマンドです。チェリー ピックとは、あるブランチのコミットを別のブランチに適用する操作のことです。git cherry-pick は変更を元に戻す際に便利です。たとえば、あるコミットを間違ったブランチに作成してしまったとします。チェリー ピックを実行すれば、正しいブランチに切り替えて、コミットを本来あるべき場所に付け替えられます。

Git チェリーピックを使うタイミング

git Cherry-pick は便利なツールですが、どんな状況でも使えるわけではありません。チェリー ピックを実行するとコミットが複製されるため、チェリー ピックが使えるようなシナリオでも、従来のマージを使った方が良い場合が多くあります。つまり、git cherry-pick は一部のシナリオのみで便利なツールなのです。

チームコラボレーション。

チーム内の各メンバーがまったく同じコード、または類似するコードに取り組んでいることはよくあります。新しい製品機能にバックエンドとフロントエンドのコンポーネントがあるという場合も考えられます。2 つの製品部門で共有しているコードがあるかもしれません。また、フロントエンド開発者が利用したいと思っているデータ構造をバックエンド開発者が作成している場合もあります。フロントエンド開発者は git cherry-pick を使って、仮想的なデータ構造が作成されたコミットを取得できます。こうすることで、フロントエンド開発者はプロジェクトで自分たちが担当している作業をそのまま続けられます。

バグのホットフィックス

バグが見つかった場合は、いち早くユーザーに修正を提供することが重要です。たとえば、開発者が新しい機能に取り組み始めた状況を例に取ってみます。新しい機能の開発中に既存のバグが見つかりました。開発者は、このバグをパッチする明示的なコミットを作成します。この新しいパッチ コミットは、さらに多くのユーザーに影響が出る前に master ブランチに直接チェリー ピックされてバグを修正します。

変更のやり直しと失われたコミットの復元

Git チェリーピックの使い方

git cherry-pick の使い方を説明するために、次のようなブランチ状態のリポジトリがあると仮定します:

    a - b - c - d   Main
         \
           e - f - g Feature

git cherry-pick の使い方はいたってシンプルで、次のように実行します:

git cherry-pick commitSha

このサンプルでは、commitSha はコミット参照です。git log を使って見つけられます。また、サンプルではコミット「f」を master に構築しています。まずは現在 master ブランチにいることを確認します。

git checkout main

次に、以下のコマンドでチェリーピックを実行します:

git cherry-pick f

実行が完了すると、Git 履歴は次のようになります:

    a - b - c - d - f   Main
         \
           e - f - g Feature

The f commit has been successfully picked into the master branch

Git チェリーピックの例

Git チェリー ピックにはいくつかの実行オプションを渡せます。

-edit

-edit オプションを渡すと、チェリー ピック操作前に git からコミット メッセージを求められます。

--no-commit

--no-commit オプションはチェリー ピックを実行しますが、新しいコミットを作成するのではなく、対象コミットのコンテンツを現在のブランチの作業ディレクトリに移動します。

--signoff

概要