- チェリーピックの例
- マージリクエストからすべての変更をcherry-pickします。
- 単一のコミットをcherry-pickします。
- プロジェクトにチェリーピック
- cherry-pickされたコミットのシステムノートを表示します。
- 関連するトピック
- トラブルシューティング
チェリーピックの変更点
Git におけるチェリーピックとは、あるブランチからひとつのコミットを取り出し、それを別のブランチの最新コミットとして追加することです。ソースブランチの残りのコミットはターゲットブランチに追加されません。チェリーピックをすべきなのは、ひとつのコミットに含まれる変更が必要だけれども、そのブランチの内容全体を別のブランチに取り込むことはできない、あるいはしたくないという場合です。
GitLab UI を使えば、単一のコミットやマージリクエスト全体をチェリーピックすることができます。プロジェクトのフォークからコミットをチェリーピックすることもできます。
チェリーピックの例
このチェリーピックの例では、Git リポジトリにdevelop
とmain
の 2 つのブランチがあるとします。この例では、一方のブランチからチェリーピックしたコミットをもう一方のブランチに追加しています:
この例では、develop
ブランチのコミットB
のチェリーピックが、main
ブランチのコミットE
の後に追加されています。
コミットG
はチェリーピックの後に追加されます。
マージリクエストからすべての変更をcherry-pickします。
マージリクエストがマージされた後、マージリクエストによってもたらされたすべての変更をcherry-pickすることができます:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- コード > マージリクエストを選択し、マージリクエストを見つけてください。
- マージリクエストレポートセクションまでスクロールし、マージレポートを見つけます。
-
右上隅で、チェリーピックを選択します:
- モーダルウィンドウで、cherry-pickするプロジェクトとブランチを選択します。
- オプションです。これらの変更で新しいマージリクエストを開始するを選択します。
- cherry-pick を選択します。
単一のコミットをcherry-pickします。
GitLabプロジェクトの複数の場所から一つのコミットをcherry-pickすることができます。
プロジェクトのコミットリストから
プロジェクトの全コミット一覧からコミットを cherry-pick するには、次のようにします:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- コード > コミットを選択します。
- チェリーピックしたいコミットのタイトルを選択します。
- 右上の [オプション] > [チェリーピック]を選択し、チェリーピックのモーダルを表示します。
- モーダルウィンドウで、cherry-pickするプロジェクトとブランチを選択します。
- オプションです。これらの変更で新しいマージリクエストを開始するを選択します。
- cherry-pick を選択します。
マージリクエストから
マージリクエストがオープンされているかクローズされているかにかかわらず、プロジェクトのマージリクエストからコミットをチェリーピックすることができます。マージリクエストに含まれるコミット一覧からコミットをチェリーピックするには、次のようにします:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- コード > マージリクエストを選択し、マージリクエストを見つけてください。
- マージリクエストのセカンダリメニューでCommitsを選択し、コミットの詳細ページを表示します。
- チェリーピックしたいコミットのタイトルを選択します。
- 右上の [オプション] > [チェリーピック]を選択し、チェリーピックのモーダルを表示します。
- モーダルウィンドウで、cherry-pickするプロジェクトとブランチを選択します。
- オプションです。これらの変更で新しいマージリクエストを開始するを選択します。
- cherry-pick を選択します。
リポジトリのファイルビューから
プロジェクトの Git リポジトリでファイルを表示する際に、個々のファイルに影響を与えた過去のコミットの一覧から cherry-pick できます:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- コード > リポジトリを選択し、コミットによって変更されたファイルに移動します。
- 履歴を選択し、cherry-pickしたいコミットのタイトルを選択します。
- 右上の [オプション] > [チェリーピック]を選択し、チェリーピックのモーダルを表示します。
- モーダルウィンドウで、cherry-pickするプロジェクトとブランチを選択します。
- オプションです。これらの変更で新しいマージリクエストを開始するを選択します。
- cherry-pick を選択します。
プロジェクトにチェリーピック
GitLabユーザーインターフェースから、同じプロジェクト、または同じプロジェクトのフォークからのマージリクエストをcherry-pickすることができます:
- マージリクエストのセカンダリメニューでCommitsを選択し、コミットの詳細ページを表示します。
- 右上の [オプション] > [チェリーピック]を選択し、チェリーピックのモーダルを表示します。
- Pick into projectと Pick into branchで、移動先のプロジェクトとブランチを選択します:
- オプションです。マージリクエストを作成する準備ができたら、新しいマージリクエストを開始する を選択します。
- cherry-pick を選択します。
cherry-pickされたコミットのシステムノートを表示します。
GitLab UI や API でマージコミットをチェリーピックすると、GitLab は関連するマージリクエストスレッドに [USER]
commit[SHA]
[DATE]
のブランチ** [BRANCHNAME]
に変更をピックした システムノートを追加します:
システムノートは、新しいコミットと既存のマージリクエストをクロスリンクします。各デプロイの関連マージリクエストのリストには、cherry-pickされたマージコミットが含まれます。
関連するトピック
- コミットAPIを使用してcherry-pickする際に、変更にカスタムメッセージを追加します。
トラブルシューティング
cherry-pick時に別の親コミットを選択した場合
GitLab UI でマージコミットをチェリーピックするとき、メインラインは常に最初の親になります。別のメインラインでチェリーピックするにはコマンドラインを使います。
ここでは、二番目の親をメインラインとしてマージコミットをチェリーピックする簡単な例を示します:
git cherry-pick -m 2 7a39eb0