マージリクエストの作成

GitLabはマージリクエストを作成するための様々な方法を提供しています。

note
GitLabは問題を防ぐためにブランチの命名規則を強制し、マージリクエストの作成を効率化するためにブランチの命名パターンを提供します。

マージリクエスト一覧から

マージリクエスト一覧からマージリクエストを作成することができます。

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. コード > マージリクエストを選択します。
  3. 右上の「新規マージリクエスト」を選択します。
  4. ソースブランチとターゲットブランチを選択し、ブランチを比較して続行します。
  5. フィールドに入力し、マージリクエストを作成 を選択します。
note
マージリクエストは、1対1(1:1)のブランチ関係で設計されています。一度に一つのブランチに対して、一つのマージリクエストしか関連付けることができません。

イシューから

GitLab 14.8でマージリクエスト作成ボタンがマージリクエスト作成フォームを開くように変更されました。

開発者のワークフローでマージリクエストごとにイシューが必要な場合は、イシューから直接ブランチを作成することで、プロセスをスピードアップできます。新しいブランチとそのマージリクエストは、このイシューに関連するものとしてマークされます。マージリクエストをマージした後、イシューの自動クローズが無効になっていない限り、イシューは自動的にクローズされます。イシューの説明の下に、マージリクエストを作成するドロップダウンリストが表示されます。

note
GitLab 14.8以降では、マージリクエストを作成するを選択すると、すぐにマージリクエストが作成されるのではなく、マージリクエスト作成フォームにリダイレクトされます。

以下の場合、マージリクエストを作成は表示されません:

  • 同じ名前のブランチがすでに存在する場合。
  • このブランチにはすでにマージリクエストが存在します。
  • あなたのプロジェクトにはアクティブなフォーク関係があります。
  • あなたのプロジェクトは非公開であり、イシューは機密です。

このボタンを表示させるには、回避策として、プロジェクトのフォーク関係を削除することが考えられます。削除後、フォーク関係は復元できません。このプロジェクトは、ソースプロジェクトや他のフォークへのマージリクエストを受け取ったり送信したりできなくなります。

ドロップダウン リストには、マージ リクエストとブランチを作成ブランチを作成 のオプションがあります。

これらのオプションのいずれかを選択すると、プロジェクトのデフォルトブランチに基づいて、新しいブランチまたはブランチとマージリクエストが作成されます。ブランチ名はプロジェクトのブランチ名テンプレートに基づいていますが、この値は変更できます。

空のリポジトリプロジェクトでブランチの作成を選択すると、GitLabはこれらのアクションを実行します:

  • デフォルトブランチを作成します。
  • 空白のREADME.md ファイルをコミットします。
  • イシューのタイトルに基づいて新しいブランチを作成し、リダイレクトします。
  • _プロジェクトが Kubernetes のようなデプロイサービスで設定されている場合、_GitLab は.gitlab-ci.yml ファイルの作成をサポートすることで、自動デプロイの設定を促します。

ブランチが作成されたら、リポジトリ内のファイルを編集してイシューを修正できます。新しく作成されたブランチに基づいてマージリクエストが作成されると、説明フィールドにイシューのクローズパターン Closes #IDが表示されます。ID はイシューの ID です。マージリクエストがマージされると、これでイシューがクローズされます。

ファイルを追加、編集、アップロードする場合

リポジトリにファイルを追加、編集、アップロードするときにマージリクエストを作成できます。

  1. リポジトリにファイルを追加・編集・アップロードします。
  2. コミットメッセージに、コミットの理由を入力します。
  3. 対象のブランチを選択するか、名前を入力して新しいブランチを作成します (スペースは入力しないでください)。
  4. これらの変更で新しいマージリクエストを開始するチェックボックスまたはトグルを選択します。このチェックボックスまたはトグルは、ターゲットがソースブランチと同じでない場合、またはソースブランチが保護されている場合にのみ表示されます。
  5. 変更をコミット を選択します。

ブランチを作成するとき

ブランチを作成するときにマージリクエストを作成できます。

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. コード > ブランチを選択します。
  3. ブランチ名を入力し、新規ブランチを選択します。
  4. ファイルリストの右側で、マージリクエストを作成 を選択します。マージリクエストが作成されます。デフォルトのブランチがターゲットです。
  5. フィールドに入力し、マージリクエストを作成 を選択します。

Git コマンドをローカルで使う場合

マージリクエストを作成するには、ローカルマシンで Git コマンドを実行します。

  1. ブランチを作成します:

    git checkout -b my-new-branch
    
  2. ファイルの作成、編集、削除ステージとコミット:

    git add .
    git commit -m "My commit message"
    
  3. ブランチをGitLabにプッシュします:

    git push origin my-new-branch
    

    GitLab はマージリクエストを作成するための直接リンクを表示します:

    ...
    remote: To create a merge request for my-new-branch, visit:
    remote:   https://gitlab.example.com/my-group/my-project/merge_requests/new?merge_request%5Bsource_branch%5D=my-new-branch
    
  4. リンクをコピーしてブラウザに貼り付けてください。

コマンドラインからプッシュする際にコマンドに他のフラグを追加することで、UIから手動でマージリクエストを編集する必要性を減らすことができます。

フォークで作業する場合

フォークからマージリクエストを作成して、メインプロジェクトに貢献することができます。

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. リポジトリのフォークを選択します。
  3. 左サイドバーでコード > マージリクエスト を選択し、新規マージリクエスト を選択します。
  4. ソースブランチドロップダウンで、フォークしたリポジトリ内のブランチをソースブランチとして選択します。
  5. ターゲットブランチドロップダウンで、アップストリームリポジトリのブランチをターゲットブランチとして選択します。デフォルトのターゲットブランチを変更するには、デフォルトのターゲットプロジェクトを設定します(フォークしたプロジェクトで作業する場合に便利です)。
  6. ブランチを比較して続行を選択します。
  7. マージリクエストを作成を選択します。

あなたの作業がマージされた後、アップストリームプロジェクトに他の貢献をするつもりがない場合、そのアップストリームプロジェクトからあなたのフォークのリンクを解除することができます。

詳細については、フォーク作業の流れを参照してください。

電子メールを送ることによって

GitLab にメールを送ることで、マージリクエストを作成することができます。マージリクエストの対象ブランチは、プロジェクトのデフォルトブランチです。

前提条件:

メールを送信してマージリクエストを作成するには:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. コード > マージリクエストを選択します。
  3. 右上隅で、このプロジェクトに新しいマージリクエストを電子メールで送信を選択します。メールアドレスが表示されます。このアドレスをコピーします。このアドレスが非公開であることを確認してください。
  4. Eメールを開き、以下の内容でメッセージを作成してください:

    • To行にはコピーしたEメールアドレスを入力します。
    • 件名はソースブランチ名です。
    • メッセージ本文はマージリクエストの説明です。
  5. メールメッセージを送信します。

マージリクエストが作成されます。

電子メールでマージリクエストを作成する際に添付ファイルを追加

メールに添付ファイルとしてパッチを追加することで、マージリクエストにコミットを追加することができます。ファイル名が.patch で終わるすべての添付ファイルはパッチとみなされ、名前順に処理されます。

パッチの合計サイズは2MBまでです。

対象のソースブランチが存在しない場合、リポジトリの HEAD または指定したターゲットブランチから作成されます。ターゲットブランチを指定するには、/target_branch クイックアクションを使用します。ソースブランチがすでに存在する場合は、その上にパッチが適用されます。

デフォルトのターゲットプロジェクトの設定

GitLab 13.11 で導入されました

マージリクエストは、フォークを伴わない限りソースプロジェクトとターゲットプロジェクトが同じである必要があります。プロジェクトのフォークを作成すると、新しいマージリクエストを作成するときにこれらのシナリオのいずれかを引き起こす可能性があります:

  • アップストリームプロジェクト(フォークしたプロジェクト、デフォルトのオプション)を対象とします。
  • 自分のフォークを対象とします。

デフォルトでフォークからのマージリクエストを(アップストリームプロジェクトではなく)自分のフォークを対象とするようにするには、デフォルトを変更します。

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. 設定 > マージリクエストを選択します。
  3. ターゲットプロジェクトセクションで、デフォルトターゲットプロジェクトに使用するオプションを選択します。
  4. 変更を保存を選択します。