マージリクエストの作成方法

マージリクエストを作成する前に、「マージリクエストの紹介」を読んで、コンセプトや用語を理解し、マージリクエストで何ができるかを学んでください。

すべてのマージリクエストは、まずブランチを作成することから始まります。 これは、ローカルのコマンドライン、Git CLI アプリケーション、あるいはGitLab UIを使って行うことができます。

このドキュメントでは、マージリクエストを作成するいくつかの方法について説明します。

新しいマージリクエストを開始すると、その方法に関わらず、「新規マージリクエストページが表示され、マージリクエストに関する情報を入力します。

新しいブランチを GitLab にプッシュしたときには、その方法にかかわらず マージリクエストの作成ボタンをクリックすると、そこからマージリクエストを開始することができます。

新規マージリクエストのページ

新規マージリクエストのページでは、まずマージリクエストのタイトルと説明を入力します。 ブランチですでにコミットが行われている場合は、タイトルには最初のコミットメッセージの一行目が、説明にはコミットメッセージの追加行が入力されます。 タイトルは、すべての場合に必須となる唯一のフィールドです。

そこから、情報(タイトル、説明、担当者、マイルストーン、ラベル、承認者)を記入して、「マージリクエストの作成」をクリックします。

この最初の画面から、マージリクエストを送信する前に自分のブランチにプッシュされたすべてのコミット、パイプライン、ファイルの変更を確認することもできます。

New Merge Request page

ヒント: GitLab では、マージリクエストを作成する前にブランチに 1 回以上プッシュすることができます。

マージリクエスト作成ボタン

新しいブランチを GitLab にプッシュしたら、GitLab のリポジトリにアクセスしましょう。画面上部にコールトゥアクションが表示されるので、そこからCreate Merge Requestボタンをクリックします。

Create Merge Request button

次の画面の右上にも「マージリクエストの作成」ボタンが表示されています:

  • プロジェクトのページ。
  • リポジトリ→ファイルのページ。
  • マージリクエストのページ。

この場合、GitLab はあなたが変更をプッシュした最新のブランチをソースブランチとして使用し、現在のプロジェクトのデフォルトブランチをターゲットとして使用します。

ファイルの追加、編集、アップロードによる新規マージリクエスト

GitLab UI でファイルを編集・追加・アップロードする際には、ファイルの最後にコミットメッセージを追加したり、コミットの対象となるブランチを選択したり、変更した内容で新しいマージリクエストを開始するためのチェックボックスを追加したりすることができます。

同様に、Web IDEでファイルを変更した場合、左側のサイドバーにあるCommitに移動すると、同じオプションが表示されます。

ファイルの追加、編集、アップロードが完了すると

  1. コミットメッセージに変更内容を記載します。
  2. コミットを追加する既存のブランチを選択するか、新しいブランチを作成したい場合は、新しいブランチ名を入力します(スペース、大文字、特殊文字は使用しないでください)。
  3. チェックボックスをオンにしておくと、新しいマージリクエストがすぐに開始されます。チェックボックスをオフにすると、そのブランチにさらに変更を加えてからマージリクエストを開始します。
  4. Commit changes “をクリックします。

マージリクエストの開始を選択した場合は、新規マージリクエスト」ページが表示され、そこから情報を入力してマージリクエストを送信します。

マージリクエストは、リポジトリのデフォルトブランチを対象としています。 変更したい場合は、後でマージリクエストを編集することで可能です。

UIで作成した新規ブランチからの新規マージリクエスト

GitLab UI を使ってファイルの作業を素早く始めるには、プロジェクトのリポジトリ > ブランチに移動してNew branchをクリックします。 新しいブランチが作成され、ファイルの編集を始めることができます。

コミットしてプッシュしたら、次のマージリクエストを作成ボタンをクリックして「新規マージリクエスト」ページを開きます。 現在のブランチをソースとし、現在のプロジェクトのデフォルトブランチをターゲットとして、新しいマージリクエストが開始されます。

お客様のローカル環境からの新規マージリクエスト

リポジトリがコンピュータにクローンされ、ファイルの変更作業を始めたいと思ったら、まず新しいブランチを作成してチェックアウトすることから始めましょう。

git checkout -b my-new-branch

ファイルの変更作業を行い、ステージングを行い、コミットする。

git add .
git commit -m "My commit message"

完了したら、ブランチをGitLabにプッシュします。

git push origin my-new-branch

出力では、GitLabがマージリクエストを作成するためのダイレクトリンクを表示します。

...
remote: To create a merge request for docs-new-merge-request, visit:
remote:   https://gitlab-instance.com/my-group/my-project/merge_requests/new?merge_request%5Bsource_branch%5D=my-new-branch

そのリンクをコピーして、ブラウザに貼り付けると 新規マージリクエストページが表示されるようになります。

また、コマンドラインでプッシュする際にコマンドに追加できるフラグも多数用意されており、UIでマージリクエストを手動で編集する必要性を減らすことができます。

コマンドラインでブランチを GitLab にプッシュしなかった場合 (たとえば Git CLI アプリケーションを使って変更をプッシュした場合など)、GitLab の UI である マージリクエストの作成ボタンをクリックします。

イシューからの新規マージリクエスト

また、イシューから直接新しいマージリクエストを作成することもできます。

マージ要求」ページからの新規マージ要求

プロジェクトの[マージリクエスト]ページで[新規マージリクエスト]ボタンをクリックすると、新規マージリクエストの作成を開始できます。 次に、変更内容を含むソースプロジェクトとブランチ、変更内容をマージするターゲットプロジェクトとブランチを選択します。ブランチを比較して続行]をクリックすると、[新規マージリクエスト]ページが表示され、詳細を入力できます。

フォークからの新しいマージリクエスト

プロジェクトをフォークしてローカルでの変更を適用した後、以下の手順でフォークからマージリクエストを作成し、メインプロジェクトにコントリビュートします。

  1. 「プロジェクト→あなたのプロジェクト」と進み、リポジトリのフォークを選択します。
  2. 左メニューの「マージリクエスト」から「新規マージリクエスト」をクリックします。
  3. ソースブランチのドロップダウンリストボックスで、フォークしたリポジトリのブランチをソースブランチとして選択します。
  4. ターゲットブランチドロップダウンリストボックスで、アップストリームリポジトリのブランチをターゲットブランチとして選択します。
  5. 認証情報を入力したら、「ブランチを比較」をクリックして、ローカルの変更内容をアップストリーム・リポジトリと比較します。
  6. 変更内容を確認するユーザーを指定し、「マージリクエストを作成」をクリックします。

変更がマージされると、あなたの変更は仕様通りにアップストリームのリポジトリとブランチに追加されます。 あなたの作業がマージされた後、上流のプロジェクトに他の貢献をするつもりがない場合は、「設定」>「詳細設定」セクションでフォーク関係を削除することで、フォークをそのアップストリームのプロジェクトからリンク解除することができます。

詳しくは、forking workflow documentationをご覧ください

電子メールによる新しいマージリクエスト

_この機能を利用するには、GitLabの管理者による受信メールの_設定が必要です。 GitLab.comでは利用できません。

新しいマージリクエストを作成するには、ユーザー固有のメールアドレスにメールを送信します。 このアドレスは、マージリクエストページのEmail a new merge request to thisproject ボタンをクリックすることで取得できます。 件名は新しいマージリクエストのソースブランチ名として、ターゲットブランチはプロジェクトのデフォルトブランチとして使用されます。 メッセージ本文 (空でない場合) はマージリクエストの説明として使用されます。 この機能を使用するには、“Reply by email”を有効にする必要があります。 インスタンスで有効になっていない場合は、GitLab 管理者に有効にするよう依頼してください。

このアドレスは、あなた専用に作成されたプライベートな電子メールアドレスです。 このアドレスを持っている人は、あたかもあなたであるかのように問題を作成したり、リクエストをマージしたりすることができますので、自分で管理してください。 このアドレスを連絡先リストに追加すると、簡単にアクセスすることができます。

Create new merge requests by email

GitLab 11.7では、生成されるメールアドレスの形式が更新されました。 しかし、古い形式もサポートされているため、既存のエイリアスやコンタクトを引き続き使用することができます。

電子メールでマージリクエストを作成する際のパッチの追加

GitLab 11.5で導入されました。

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

パッチの合計サイズは2MBとなります。

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

マージリクエストのレビューと管理

マージリクエストを提出した後は、GitLabでレビューや管理を行うことができます。