マージリクエストの作成
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
マージリクエストを作成する準備ができたら、ワークフローに合った方法を使用してください。マージリクエストは、次の方法で作成できます:
- GitLab UIの場合
- コマンドラインで、
glab mrコマンドを使用するか、Gitコマンドとプッシュオプションを組み合わせて使用します。 - Visual Studio Code拡張機能。
- メールを送信します
- マージリクエストAPI。
マージリクエストを作成すると、GitLabによってプロジェクトのブランチ命名規則が適用されます。マージリクエストをブランチに接続するには、ブランチの命名パターンに従ってください。詳しくはブランチに名前を付けるをご覧ください。
マージリクエストリストから
マージリクエストのリストからマージリクエストを作成できます。
- 左側のサイドバーで、検索または移動先を選択して、GitLabプロジェクトを見つけます。
- コード > マージリクエストを選択します。
- 右上隅で、新しいマージリクエストを選択します。
- ソースブランチとターゲットブランチを選択し、ブランチを比較して続行するを選択します。
- 新しいマージリクエストページのフィールドに必要事項を入力し、マージリクエストを作成を選択します。
各ブランチを関連付けることができるのは、1つのオープンなマージリクエストのみです。このブランチのマージリクエストがすでに存在する場合、既存のマージリクエストへのリンクが表示されます。
イシューから
開発ワークフローで、すべてのマージリクエストにイシューが必要な場合、イシューから直接ブランチを作成することでスピードアップできます。新しいブランチと、後でそのマージリクエストは、このイシューに関連付けられているというマークが付きます。イシューの自動完了が無効になっていない限り、マージリクエストをマージすると、イシューが自動的に完了します:
ブランチとマージリクエストを同時に作成するには:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- Plan > イシューを選択して、イシューを見つけます。
- イシューの説明の一番下まで移動します。
- マージリクエストを作成 > マージリクエストとブランチを作成を選択します。
- ダイアログで、提案されたブランチ名をレビューします。これは、プロジェクトのブランチ名テンプレートに基づいています。
- オプション。ブランチ名がすでに使用されている場合、または別のブランチ名が必要な場合は、名前を変更します。
- ソースブランチまたはタグを選択します。
- マージリクエストを作成を選択します。
タスクから
チームがイシューをタスクに分割する場合、タスクから直接ブランチを作成して、プロセスをスピードアップできます。新しいブランチと、後でそのマージリクエストは、このタスクに関連付けられているというマークが付きます。イシューの自動完了が無効になっていない限り、マージリクエストをマージすると、タスクが自動的に完了します:
前提要件:
- ロールが、タスクを含むプロジェクトのデベロッパー以上である必要があります。
ブランチとマージリクエストを同時に作成するには:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- Plan > イシューを選択します。
- イシューリストで、タスクを見つけます。
- タスクの説明の一番下まで移動します。
- マージリクエストを作成を選択します。
- ダイアログで、提案されたブランチ名をレビューします。これは、プロジェクトのブランチ名テンプレートに基づいています。
- オプション。ブランチ名がすでに使用されている場合、または別のブランチ名が必要な場合は、名前を変更します。
- ソースブランチまたはタグを選択します。
- マージリクエストを作成を選択します。
Gitリポジトリが空の場合、GitLabは以下を実行します:
- デフォルトブランチを作成します。
- 空白の
README.mdファイルをコミットします。 - イシューのタイトルに基づいて新規のブランチを作成し、リダイレクトします。
- プロジェクトがKubernetesなどのデプロイサービスで設定されている場合、GitLabは
.gitlab-ci.ymlファイルの作成を支援し、自動デプロイを設定するよう求めるプロンプトを表示します。
作成するブランチの名前のプレフィックスがタスク番号である場合、GitLabはイシューとマージリクエストをクロスリンクし、完了パターンをマージリクエストの説明に追加します。ほとんどの場合、これはCloses #IDのようになります。ここで、IDはタスクのIDです。プロジェクトがクローズパターンで設定されている場合、マージリクエストがマージされると、タスクはクローズされます。
Webエディタから
次の操作を行う場合、Webエディタを使用してマージリクエストを作成できます:
- ファイルを作成、編集、アップロード、または削除します。
- ディレクトリを作成する。
ブランチを作成する場合
ブランチを作成する際、マージリクエストを作成できます。
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- コード > ブランチを選択します。
- ブランチ名を入力して、新しいブランチを選択します。
- ファイルリストの上にあるマージリクエストを作成を選択します。マージリクエストが作成されます。デフォルトブランチがターゲットです。
- フィールドに入力し、マージリクエストを作成を選択します。
フォークで作業する場合
フォークからマージリクエストを作成して、メインプロジェクトにコントリビュートできます。
左側のサイドバーで、検索または移動先を選択して、フォークを見つけます。
コード > マージリクエストを選択し、新しいマージリクエストを選択します。
ソースブランチに対しては、変更を含むフォーク内のブランチを選択します。
ターゲットブランチの場合:
フォークではなく、アップストリームリポジトリを選択します。変更を頻繁にアップストリームにコントリビュートする場合、フォークのデフォルトのターゲットブランチを設定することを検討してください。
アップストリームリポジトリからブランチを選択します:
フォークの表示レベルの制限が親リポジトリよりも厳格な場合、ターゲットブランチはデフォルトでフォークのデフォルトブランチになります。これにより、フォーク内のプライベート情報が公開されることがなくなります。
ブランチを比較して続行するを選択します。
マージリクエストを作成を選択します。マージリクエストは、フォークではなく、ターゲットリポジトリに作成されます。
デベロッパーロール以上の場合は、希望する担当者、レビュアー、ラベル、およびマイルストーンを追加します。
Submit merge request(マージリクエストを送信)を選択します。
マージリクエストが別のリポジトリをターゲットとする場合、次が使用されます:
- ターゲットプロジェクトの承認ルール。
- フォークのCI/CD設定、リソース、およびプロジェクトCI/CD変数。
アップストリームプロジェクトでCI/CDパイプラインを実行するには、そのプロジェクトのメンバーである必要があります。フォークからのマージリクエストに対して親プロジェクトでマージリクエストパイプラインを実行すると、すべての変数がパイプラインで使用可能になります。
作業がマージされ、それ以上のコントリビューションを行う予定がない場合は、フォークとそのアップストリームリポジトリとのリンクを解除します。
デフォルトのターゲットプロジェクトを設定する
デフォルトでは、フォークから送信されたマージリクエストは、フォークではなくアップストリームリポジトリをターゲットとします。アップストリームリポジトリではなく、フォークされたリポジトリをデフォルトのターゲットとして設定できます。
前提要件:
- フォークで作業している。
- ロールがデベロッパー以上か、プロジェクトでのマージリクエスト作成が許可されている。
- アップストリームリポジトリでマージリクエストを作成できる。
- フォークの表示レベル設定の厳格度が、アップストリームリポジトリ以下である。例: フォークがプライベートで、アップストリームがパブリックの場合、この設定は表示されません。
これを行うには、以下を実行します:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > マージリクエストを選択します。
- ターゲットプロジェクトセクションで、デフォルトのターゲットプロジェクトに使用するオプションを選択します。
- 変更を保存を選択します。
メールを送信する
メールメッセージをGitLabに送信することにより、マージリクエストを作成できます。マージリクエストのターゲットブランチは、リポジトリのデフォルトブランチです。
前提要件:
- マージリクエストが、アップストリームリポジトリではなく、現在のリポジトリをターゲットとしている。
- GitLab 管理者が、受信メールを設定している。この設定はGitLab.comで有効になっています。
- GitLab 管理者が、メールによる返信を設定している。この設定はGitLab.comで有効になっています。
- ロールがデベロッパー以上か、プロジェクトでのマージリクエスト作成が許可されている。
メールを送信してマージリクエストを作成するには:
左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
コード > マージリクエストを選択します。
プロジェクトにEmail a new merge request to this project(マージリクエスト)が含まれている場合は、このプロジェクトに新しいマージリクエストをメールで送信するを選択します。
ダイアログで、表示されているメールアドレスをコピーします。このアドレスをプライベートにしてください。それを持っている人は誰でも、本人になりすましたり、イシューとマージリクエストを作成したりできます。
メールを開き、次の情報を含むメッセージを作成します:
- Toは、コピーしたメールアドレスです。
- 件名は、ソースブランチ名です。
- メールの本文は、マージリクエストの説明です。
コミットを追加するには、
.patchファイルをメッセージに添付します。メールを送信します。
マージリクエストが作成されます。
メールでマージリクエストを作成する際に添付ファイルを追加する
パッチをメールの添付ファイルとして追加することにより、マージリクエストにコミットを追加します。
- パッチの合計サイズは2 MB以下である必要があります。
- パッチと見なされるには、添付ファイルのファイル名の最後が
.patchである必要があります。 - パッチは、名前順に処理されます。
- 件名からのソースブランチが存在しない場合、リポジトリの
HEAD、またはデフォルトのターゲットブランチから作成されます。ターゲットブランチを手動で変更するには、/target_branchクイックアクションを使用します。 - ソースブランチがすでに存在する場合、パッチがその上に適用されます。
関連トピック
トラブルシューティング
イシューでマージリクエストを作成するオプションがない
マージリクエストを作成オプションがイシューに表示されないのは、次のような場合です:
- 同じ名前のブランチがすでに存在する。
- このブランチのマージリクエストがすでに存在している。
- プロジェクトにアクティブなフォーク関係がある。
- プロジェクトがプライベートで、イシューが機密である。
このボタンを表示するために考えられる回避策の1つは、プロジェクトのフォーク関係を削除すること削除後、フォーク関係を復元することはできません。プロジェクトでは、ソースプロジェクト、またはその他のフォークとの間でマージリクエストを送受信できなくなります。
メールメッセージを処理できませんでした
マージリクエストを作成するためにメールを送信し、アップストリームリポジトリをターゲットにしようとすると、GitLabがこのエラーメッセージを返します:
Unfortunately, your email message to GitLab could not be processed.
You are not allowed to perform this action. If you believe this is in error, contact a staff member.