チェリーピックで変更をコピーする
- [アーティクル]
-
-
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
Git チェリーピックでは、1 つ以上のソース ブランチ コミット からターゲット ブランチに変更をコピーします。 マージやリベースとは異なり、チェリーピックでは特定のソース ブランチ コミットを選択できます。 チェリーピックしたソース ブランチのコミットごとに、Git ではターゲット ブランチに上に対応するコミットが作成されます。
次の一般的なタスクに取り組むために、チェリーピックを実行できます。
- あるブランチから別のブランチに特定の機能をデプロイする。
- 間違ったブランチでコミットした作業をコピーする。
- 複数のブランチにバグ修正を適用する。
Git ワークフローの概要については、Azure Repos Git チュートリアル参照してください。
コミットをチェリーピックする
Azure Repos
Azure Repos では、チェリーピックのサポートが制限されており、ターゲット ブランチに修正プログラムを適用する pull request を作成する目的でのみ提供されます。 詳細については、「Azure DevOps チェリーピックの改善」を参照してください。
Azure Repos の pull request メニューの [チェリーピック] オプションでは、次の処理が行われます。
- pull request のターゲット ブランチから新しいトピック ブランチを作成します。
- pull request のソース ブランチから新しいトピック ブランチへの "すべての" 変更をチェリーピックします。
- 新しいトピック ブランチを別のターゲット ブランチにマージする新しい pull request を作成することを求めるメッセージが表示されます。
詳細なチュートリアルについては、チェリーピックを使用して新しい pull request を作成することに関する記事を参照してください。
GitHub
GitHub Web インターフェイスではチェリーピックはサポートされていませんが、GitHub Desktop ではサポートされています。 GitHub Desktop でチェリーピックを行う方法の詳細なガイダンスについては、コミットのチェリーピックに関する記事を参照してください。
Visual Studio 2022 では、[Git] メニュー、[Git 変更] を使用して、およびソリューション エクスプローラーのコンテキスト メニューを通じて、Git バージョン コントロール エクスペリエンスが提供されます。 Visual Studio 2019 バージョン 16.8 には、チーム エクスプローラーの Git ユーザー インターフェイスも用意されています。 詳細については、「Visual Studio 2019 - チーム エクスプローラー」タブを参照してください。
[Git]>[ブランチの管理] を選択して、[Git リポジトリ] ウィンドウを開きます。
[Git リポジトリ] ウィンドウで、ターゲット ブランチを右クリックし、[チェックアウト] を選択します。
[ブランチ] ビューで 、ソース ブランチを右クリックし、[履歴の表示] を選択してコミットの [履歴] タブを開きます。
[履歴] タブで、チェリーピックするコミットを右クリックし、[チェリーピック] を選択します。 Visual Studio では、一度に複数のコミットを選択することはサポートされていないため、チェリーピックするコミットごとにこの手順を繰り返す必要があります。
Visual Studio では、チェリーピック コミットからの変更を含む新しいターゲット ブランチ コミットが作成されます。 チェリーピック操作が正常に完了しない場合は、Visual Studio から通知されます。
Visual Studio 2019 バージョン 16.8 以降のバージョンでは、チーム エクスプローラーの Git ユーザー インターフェイスが維持される一方、Git バージョン コントロール エクスペリエンスが提供されます。 チーム エクスプローラーを使用するには、メニュー バーで [ツール]>[オプション]>[プレビュー機能]>[New Git User Experience] (新しい Git ユーザー エクスペリエンス) のチェック ボックスをオフにします。 どちらのインターフェイスからも Git 機能を同じように使用できます。
[チーム エクスプローラー] で、[ホーム] ボタンを選んで、[ブランチ] を選びます。
[ブランチ] ビューで、ターゲット ブランチを右クリックし、[チェックアウト] を選択します。
[ブランチ] ビューで 、ソース ブランチを右クリックし、[履歴の表示] を選択してコミットの [履歴] タブを開きます。
[履歴] タブで、チェリーピックするコミットを右クリックし、[チェリーピック] を選択します。 Visual Studio では、一度に複数のコミットを選択することはサポートされていないため、チェリーピックするコミットごとにこの手順を繰り返す必要があります。
Visual Studio では、チェリーピック コミットからの変更を含む新しいターゲット ブランチ コミットが作成されます。 チェリーピック操作が正常に完了しない場合は、Visual Studio から通知されます。
git log
コマンドを使用して、ソース ブランチのコミットを一覧表示します。 --oneline
フラグにより、コミット情報が省略されます。
git log --oneline <source branch>
Git では、最新のコミットが先に表示されます。 各コミット ID は、コミットを一意に識別する部分的な SHA-1 ハッシュです。 次に例を示します。
e745d06 (HEAD -> add-network-controller) Add a test initialization class
a89f48e (origin/add-network-controller) Add fiber optic transceiver test
31da50b Add network switch test
e74baa2 (origin/main, origin/HEAD, test-fiber-optic-transmitter, main) Add readme content
0c14391 Add readme file
32e3946 Add project files.
チェリーピックするコミットの ID を書き留めます。
まだチェックアウトされていない場合は、ターゲット ブランチをチェックアウトします。
git checkout <target branch>
コミットされていない変更をコミット、スタッシュ、または破棄します。
1 つのコミットをチェリーピックするには:
git cherry-pick <commit ID>
複数のコミットをチェリーピックするには、コミット ID をスペースで区切ります。 コミットは、入力した順序で適用されます。
git cherry-pick <commit1 ID> <commit2 ID> <commit3 ID>
コミットの包括的な範囲を選択するには、 ^..
dot 範囲表記を使用します:
git cherry-pick <oldest-commit ID>^..<newest-commit ID>
複数のコミットをチェリーピックすると、既定の cherry-pick コマンドによって、対応する一連の新しいターゲット ブランチ コミットが作成されます。 ターゲット ブランチの変更をステージングしてコミットしないように Git に指示するために、-n
フラグを使用します。
git cherry-pick -n <commit1 ID> <commit2 ID>
その後、手動で 1 つのコミットを作成して、チェリーピック操作のすべての変更を含めることができます。
チェリーピック操作中にマージの競合が発生した場合、Git から通知されます。 競合を解決してから git cherry-pick --continue
を実行することも、git cherry-pick --abort
を実行してチェリーピック操作を取り消すこともできます。
次のステップ
関連記事