Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022
Visual Studio 2019 |Visual Studio 2022
Git チェリーピックでは、1 つ以上のソース ブランチ コミット からターゲット ブランチに変更をコピーします。
マージやリベースとは異なり、チェリーピックでは特定のソース ブランチ コミットを選択できます。 チェリーピックしたソース ブランチのコミットごとに、Git ではターゲット ブランチに上に対応するコミットが作成されます。
次の一般的なタスクに取り組むために、チェリーピックを実行できます。
- あるブランチから別のブランチに特定の機能をデプロイする。
- 間違ったブランチでコミットした作業をコピーする。
- 複数のブランチにバグ修正を適用する。
Git ワークフローの概要については、Azure Repos Git チュートリアル参照してください。
[前提条件]
| カテゴリ |
Requirements |
|
プロジェクトへのアクセス権 |
プロジェクトのメンバー。 |
|
アクセス許可 |
- プライベート プロジェクトのコードを表示する: 少なくとも Basic アクセス。 - プライベート プロジェクトのコードを複製または投稿する: 共同作成者 セキュリティ グループのメンバー、またはプロジェクト内の対応するアクセス許可。 - ブランチまたはリポジトリのアクセス許可を設定する: ブランチまたはリポジトリの アクセス許可を管理 します。 - 既定のブランチを変更する: リポジトリ のポリシー のアクセス許可を編集します。 - リポジトリをインポートする: プロジェクト管理者 セキュリティ グループのメンバーまたは Git プロジェクト レベルの [リポジトリ の作成 ] アクセス許可が [許可] に設定されています。 詳細については、「 Git リポジトリのアクセス許可を設定する」を参照してください。 |
|
サービス |
リポジトリが有効になっています。 |
|
ツール |
Optional.
az repos コマンドを使用する: Azure DevOps CLI。 |
注
パブリック プロジェクトでは、 利害関係者 アクセス権を持つユーザーは、コードの表示、複製、投稿など、Azure Repos へのフル アクセス権を持ちます。
| カテゴリ |
Requirements |
|
プロジェクトへのアクセス権 |
プロジェクトのメンバー。 |
|
アクセス許可 |
- コードを表示: 少なくとも 基本 アクセス。 - コードの複製または投稿: 共同作成者 セキュリティ グループのメンバー、またはプロジェクト内の対応するアクセス許可。 |
|
サービス |
リポジトリが有効になっています。 |
コミットをチェリーピックする
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 を実行してチェリーピック操作を取り消すこともできます。
次のステップ
関連記事