マージリクエスト
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
マージリクエストは、チームがコードをレビューし、ディスカッションを行い、コードの変更を追跡するための一元的な場所を提供します。変更を加えた理由を説明するには、マージリクエストをイシューにリンクし、マージリクエストのマージ時にイシューを自動的にクローズします。
マージリクエストは、特定分野の専門家が提案された変更をレビューし、組織のセキュリティ要件が満たされていることを保証するのに役立ちます。開発プロセスの早い段階でマージリクエストを作成すると、チームはバグやコード品質の問題を把握する時間を確保できます。
マージリクエストを表示すると、以下が表示されます:
- リクエストの説明
- コードの変更とインラインコードレビュー
- CI/CDパイプラインに関する情報
- マージ可能性レポート
- コメント
- コミットのリスト
マージリクエストを作成する
マージリクエストを作成するさまざまな方法を参照してください。
マージリクエストテンプレートを使用する
マージリクエストを作成すると、GitLabは説明テンプレートの存在を確認して、マージリクエストにデータを追加します。GitLabは、1から5の順にこれらの場所を確認し、最初に見つかったテンプレートをマージリクエストに適用します:
| 名前 | プロジェクトUI 設定 | グループdefault.md | インスタンスdefault.md | プロジェクトdefault.md | テンプレートなし |
|---|---|---|---|---|---|
| 標準コミットメッセージ | 1 | 2 | 3 | 4 | 5 |
Closes #1234のようなイシューのクローズパターンを含むコミットメッセージ | 1 | 2 | 3 | 4 | 5 * |
1234-exampleのようなイシューIDで始まるブランチ名 | 1 * | 2 * | 3 * | 4 * | 5 * |
アスタリスク(*)が付いた項目は、イシューのクローズパターンも付け加えます。
マージリクエストを表示する
プロジェクト、グループ、または自分のマージリクエストを表示できます。
ホームページにすべてのマージリクエストを表示するには、Shift + mのキーボードショートカットを使用するか、次の手順に従います:
- 左側のサイドバーで、マージリクエストアイコンをクリックします。
または:
- 左側のサイドバーで、検索または移動先を選択します。
- ドロップダウンリストから、マージリクエストを選択します。
プロジェクトのすべてのマージリクエストを表示するには:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- コード > マージリクエストを選択します。
または、キーボードショートカットを使用するには、g + mキーを押します。
グループ内のすべてのプロジェクトのマージリクエストを表示するには:
- 左側のサイドバーで、検索または移動先を選択して、グループを見つけます。
- コード > マージリクエストを選択します。
グループにサブグループが含まれている場合、このビューにはサブグループプロジェクトからのマージリクエストも表示されます。
リポジトリ内のファイルを表示した場合、GitLabは、現在のブランチを対象にしてファイルを変更するオープンマージリクエストの数を示すバッジを表示します。これにより、保留中の変更があるファイルを特定できます。
この機能の利用可否は、機能フラグによって制御されます。詳細については、ファイルに対するオープンマージリクエストの表示を参照してください。
ファイルに対するオープンマージリクエストを表示するには:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 表示したいファイルに移動します。
- 画面の右上にあるファイル名の横で、 オープンマージリクエストの数を示す緑色のバッジを探します。
- バッジを選択すると、過去30日間に作成されたオープンマージリクエストの一覧が表示されます。
- リスト内のマージリクエストを選択すると、そのマージリクエストに移動します。
マージリクエストのリストをフィルタリングする
マージリクエストのリストをフィルタリングするには:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- コード > マージリクエストを選択します。
- マージリクエストのリストの上にある結果を検索またはフィルタリングを選択します。
- ドロップダウンリストから、フィルタリングする属性を選択します。次に例を示します:
- By environment or deployment date(環境またはデプロイ日)。
- ID: フィルター
#30を入力して、マージリクエスト30のみを返します。 - ユーザーフィルター: 次のいずれかのフィルターを入力(またはドロップダウンリストから選択)して、ユーザーのリストを表示します:
- 承認したユーザー: ユーザーがすでに承認したマージリクエスト。PremiumおよびUltimateのみ。
- 承認者: このユーザーが承認する資格のあるマージリクエスト(詳細については、コードオーナーを参照してください)。PremiumおよびUltimateのみ。
- マージしたユーザー: このユーザーがマージしたマージリクエスト。
- レビュアー: このユーザーがレビューしたマージリクエスト。
- 属性のフィルタリングに使用する演算子を選択または入力します。次の演算子を使用できます:
=: 等しい!=: 等しくない
- 属性をフィルタリングするテキストを入力します。一部の属性は、なしまたは任意でフィルタリングできます。
- このプロセスを繰り返して、論理
ANDで結合された、より多くの属性でフィルタリングします。 - ソート順(降順の場合は 、昇順の場合は )を選択します。
環境またはデプロイ日別
デプロイデータ(環境や日付など)でマージリクエストをフィルタリングするには、次のいずれかを入力(またはドロップダウンリストから選択)します:
- 環境
- デプロイ前
- デプロイ後
早送りのマージ方法ではマージコミットが作成されないため、この方法を使用するプロジェクトは結果を返しません。
環境でフィルタリングする場合、選択できるすべての環境がドロップダウンリストに表示されます。
Deployed before(デプロイ前)またはDeployed after(デプロイ後)でフィルタリングする場合:
- 日付は、(マージコミットによってトリガーされた)環境へのデプロイが正常に完了した時点を指します。
- デプロイ日は手動で入力する必要があります。
- デプロイ日の形式は
YYYY-MM-DDです。日付と時刻の両方を指定する場合は、二重引用符(")で囲みます("YYYY-MM-DD HH:MM")。
マージリクエストに変更を加える
マージリクエストに変更を加える権限がある場合は、いくつかの方法で既存のマージリクエストに変更を加えることができます。これらの方法は、変更の複雑さと、開発環境へのアクセス権が必要かどうかに応じて異なります:
- Web IDEで変更を編集するには、ブラウザで.キーのキーボードショートカットを使用します。複数のファイルを編集する場合、またはGitコマンドに慣れていない場合は、このブラウザベースの方法を使用します。Web IDEからテストを実行することはできません。
- ファイルを編集し、その後のテストを実行するためのすべての機能を備えた環境が必要な場合は、Gitpodで変更を編集します。Gitpodは、GitLab Development Kit(GDK) の実行をサポートしています。Onaを使用するには、ユーザーアカウントでOnaを有効にする必要があります。
- Gitおよびコマンドラインに精通している場合は、コマンドラインから変更をプッシュします。
ユーザーをマージリクエストに割り当てる
マージリクエストをユーザーに割り当てるには、マージリクエストのテキストエリアで/assign @userクイックアクションを使用するか、次の手順に従います:
左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
コード > マージリクエストを選択し、マージリクエストを見つけます。
右側のサイドバーで、右側のサイドバーを展開して、担当者セクションを見つけます。
編集を選択します。
割り当てるユーザーを検索し、ユーザーを選択します。GitLab Freeでは、マージリクエストごとに1人の担当者を許可しますが、GitLab PremiumおよびGitLab Ultimateでは、複数の担当者を許可します:
GitLabは、ユーザーのアサインされたマージリクエストページにマージリクエストを追加します。
マージリクエストをマージする
マージリクエストのレビュープロセス中に、レビュアーは変更に関するフィードバックを提供します。レビュアーが変更に満足している場合は、一部のマージチェックが失敗していても自動マージを有効にすることができます。すべてのマージチェックに合格すると、マージリクエストは自動的にマージされ、それ以上の操作は必要ありません。
デフォルトのマージ権限:
- デフォルトブランチ(通常は
main)は保護されています。 - メンテナー以上のロールのみがデフォルトブランチにマージできます。
- デベロッパーは、保護されていないブランチをターゲットとする任意のマージリクエストをマージできます。
特定のマージリクエストをマージする権限があるかどうかを判断するために、GitLabは以下を確認します:
- プロジェクトでのロール(デベロッパー、メンテナー、オーナーなど)
- ターゲットブランチのブランチ保護
マージリクエストをクローズする
マージリクエストでの作業を完全に停止する場合は、削除するのではなく、クローズしてください。
前提要件:
- マージリクエストの作成者または担当者である必要があります。または
- プロジェクトのデベロッパー、メンテナー、またはオーナーのロールを持っている必要があります。
プロジェクトでマージリクエストをクローズするには:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- コード > マージリクエストを選択し、マージリクエストを見つけます。
- ページの下部にあるコメントボックスまでスクロールします。
- コメントボックスの後のマージリクエストをクローズを選択します。
GitLabはマージリクエストをクローズしますが、マージリクエスト、そのコメント、および関連するパイプラインのレコードを保持します。
マージ時にソースブランチを削除する
次のように、マージリクエストのソースブランチを削除できます:
- マージリクエストを作成するときに、Delete source branch when merge request accepted(マージリクエストが承認されたときにソースブランチを削除します。)を選択します。
- マージリクエストをマージするときに、メンテナーロールを持っている場合は、ソースブランチを削除を選択します。
管理者は、プロジェクトの設定でこのオプションをデフォルトにすることができます。
delete-branchアクションは、自動マージを設定するユーザーまたはマージリクエストをマージするユーザーによって実行されます。ユーザーに正しいロールがない場合(フォークされたプロジェクトなど)、ソースブランチの削除は失敗します。
ターゲットブランチのマージ時にマージリクエストを更新する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
マージリクエストは多くの場合連鎖しており、1つのマージリクエストは別のマージリクエストで追加または変更されたコードに依存しています。個々のマージリクエストを小さく保つことをサポートするために、GitLabは、ターゲットブランチがmainにマージされるときに、最大4つのオープンマージリクエストを更新できます。次に例を示します:
- マージリクエスト1:
feature-alphaをmainにマージします。 - マージリクエスト2:
feature-betaをfeature-alphaにマージします。
これらのマージリクエストが同時にオープンになっていて、マージリクエスト1(feature-alpha)がmainにマージされる場合、GitLabはマージリクエスト2の宛先をfeature-alphaからmainに更新します。
相互接続されたコンテンツ更新を含むマージリクエストは、通常、次のいずれかの方法で処理されます:
- 最初に、マージリクエスト1が
mainにマージされます。次に、マージリクエスト2のターゲットがmainに変更されます。 - マージリクエスト2が
feature-alphaにマージされます。更新されたマージリクエスト1は、feature-alphaとfeature-betaの内容を含むようになり、mainにマージされます。
この機能は、マージリクエストがマージされた場合にのみ機能します。マージ後にRemove source branch(ソースブランチを削除)を選択しても、オープンマージリクエストのターゲットは変更されません。この改善は、フォローアップとして提案されています。
マージリクエストのワークフロー
チームで作業するソフトウェアデベロッパー向け:
- 新しいブランチをチェックアウトし、マージリクエストを通じて変更を送信します。
- チームからフィードバックを集めます。
- Code Qualityレポートでコードを最適化する実装に取り組みます。
- GitLab CI/CDの単体テストレポートで変更を確認します。
- ライセンス承認ポリシーを使用して、ライセンスがプロジェクトと互換性のない依存関係の使用を回避します。
- マネージャーに承認をリクエストします。
- マネージャー:
- 最終レビューでコミットをプッシュします。
- マージリクエストを承認します。
- 自動マージ(旧パイプラインが成功したときにマージ)に設定します。
- GitLab CI/CDの手動ジョブで、変更が本番環境にデプロイされます。
- 実装が顧客に正常に送信されました。
会社のWebサイト用のWebページを作成するWebデベロッパー向け:
- 新しいブランチをチェックアウトし、マージリクエストを通じて新しいページを送信します。
- レビュアーからフィードバックを集めます。
- レビューアプリで変更をプレビューします。
- Webデザイナーに実装をリクエストします。
- マネージャーに承認をリクエストします。
- 承認後、GitLabは以下を実行します:
- コミットをスカッシュします。
- コミットをマージします。
- GitLab Pagesを使用して、ステージングに変更をデプロイします。
- 本番環境チームは、マージコミットを本番環境にチェリーピックします。
マージリクエストのアクティビティーをフィルタリングする
マージリクエストの履歴を把握するには、アクティビティーフィードをフィルタリングして、自分に関係のある項目のみを表示します。
左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
コード > マージリクエストを選択します。
マージリクエストを選択します。
アクティビティーまでスクロールします。
ページの右側で、Activity filter(アクティビティーをフィルタリング)を選択して、フィルターオプションを表示します。すでにフィルターオプションを選択している場合、このフィールドにはActivity + 5 more(アクティビティー + 他5件)のように、選択内容の概要が表示されます。
表示するアクティビティーのタイプを選択します。オプションには以下が含まれます:
- 担当者とレビュアー
- 承認
- ボットからのコメント
- ユーザーからのコメント
- コミットとブランチ
- 編集
- ラベル
- ロック状態
- メンション
- マージリクエストのステータス
- トラッキング
オプション。Sort(ソート)( )を選択して、ソート順を逆にします。
選択内容は、すべてのマージリクエストで保持されます。右側のソートボタンをクリックして、ソート順を変更することもできます。
コメントスレッドの管理
マージリクエストのディスカッションには、単一のコメントとコメントのスレッドが含まれます。未解決のスレッドはマージリクエストのマージをブロックしますが、単一のコメントはブロックしません。スレッドのディスカッションが終了したら、スレッドを解決するして表示を折りたたみます。コメントスレッドが重要だが、マージリクエストをブロックすべきでない場合は、イシューに移動してディスカッションを続けます。
すべてのスレッドを展開する
GitLabは、マージリクエストの右上隅に開いているスレッドの数を表示します。このマージリクエストには、3つのオープンスレッドがあります:
折りたたまれたスレッド内のすべてのコメントを表示するには、スレッドを展開します:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- コード > マージリクエストを選択し、マージリクエストを見つけます。
- マージリクエストの右上にあるOpen threads(未解決スレッド)ドロップダウンリストで、スレッドオプション( )を選択します。
- すべてのコメントを表示を選択します。
イシューに開いているスレッドを移動する
開いているスレッドを新しいイシューに移動し、マージリクエストのブロックを解除するには:
マージリクエストに1つの特定の未解決スレッドがある場合は、イシューを作成して個別に解決できます:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- コード > マージリクエストを選択し、マージリクエストを見つけます。
- マージリクエストで、移動するスレッドを検索します。
- スレッドへの最後の返信の下、スレッドを解決にするの横にあるスレッドを解決するためのイシューを作成( )を選択します。
- 新しいイシューのフィールドに入力し、イシューの作成を選択します。
GitLabはスレッドを解決済みにし、マージリクエストから新しく作成されたイシューにリンクを追加します。
マージリクエストに複数の未解決スレッドがある場合は、イシューを作成して個別に解決できます:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- コード > マージリクエストを選択し、マージリクエストを見つけます。
- マージリクエストの右上にあるOpen threads(未解決スレッド)ドロップダウンリストで、スレッドオプション( )を選択します。
- 新しいイシューですべて解決するを選択します。
- 新しいイシューのフィールドに入力し、イシューの作成を選択します。
GitLabはすべてのスレッドを解決済みにし、マージリクエストから新しく作成されたイシューにリンクを追加します。
すべてのスレッドが解決されるまでマージを禁止する
スレッドが未解決のままマージリクエストがマージされるのを防ぐことができます。この設定を有効にすると、少なくとも1つのスレッドが未解決のままである間、マージリクエストのOpen threads(未解決スレッド)カウンターはオレンジ色で表示されます。
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > マージリクエストを選択します。
- マージチェックセクションで、すべてのスレッドが解決しているチェックボックスをオンにします。
- 変更を保存を選択します。
期限切れになったときにマージリクエストのスレッドを自動的に解決する
記述されている行が新しいプッシュによって変更されたときに、スレッドを自動的に解決するようにマージリクエストを設定できます。
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > マージリクエストを選択します。
- マージオプションセクションで、**期限切れになったときにマージリクエストの差分スレッドを自動的に解決します。**を選択します。
- 変更を保存を選択します。
これで、プッシュによって差分セクションが古くなると、スレッドが解決されるようになります。変更されていない行のスレッドと、最上位の解決可能なスレッドは解決されません。
通知とTo Doを移動する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。
この機能フラグを有効にすると、通知ボタンとTo Doアイテムボタンがページ右上隅に移動します。
- マージリクエストでは、これらのボタンはタブの右端に表示されます。
- イシュー、インシデント、エピックでは、これらのボタンは右側のサイドバー上部に表示されます。

