マージリクエスト
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
マージリクエストは、チームがコードをレビューし、ディスカッションを行い、コードの変更を追跡するための一元的な場所を提供します。変更を加えた理由を説明するには、マージリクエストをイシューにリンクし、マージリクエストのマージ時にイシューを自動的にクローズします。
マージリクエストは、特定分野の専門家が提案された変更をレビューし、組織のセキュリティ要件が満たされていることを保証するのに役立ちます。開発プロセスの早い段階でマージリクエストを作成すると、チームはバグやコード品質の問題を把握する時間を確保できます。
マージリクエストを表示すると、以下が表示されます。
- リクエストの説明
- コードの変更とインラインコードレビュー
- CI/CDパイプラインに関する情報
- マージ可能性レポート
- コメント
- コミットのリスト
割り当て担当者とレビュアー
マージリクエストには2つのロールがあります:
- 担当者: マージリクエストのオーナーであり、その進捗に責任を負います。割り当て担当者は通常、作成者です。
- レビュアー: 変更をレビューし、フィードバックを提供します。レビュアーは変更をリクエストできます。また、承認資格がある場合は、マージリクエストを承認できます。
プロジェクトの承認ルールと設定によって、誰がマージリクエストを承認できるかが決まります。
詳細については、担当者を割り当ておよびレビュアーをリクエストを参照してください。
マージリクエストを作成する
マージリクエストを作成するさまざまな方法を学習します。
マージリクエストテンプレートを使用する
マージリクエストを作成すると、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からテストを実行することはできません。
- ファイルの編集とテストの実行の両方を行うためのフル機能の環境が必要な場合は、Onaで変更を編集します。OnaはGitLab Development Kit(GDK)をサポートしています。Onaを使用するには、ユーザーアカウントでOnaを有効にする必要があります。
- Gitおよびコマンドラインに精通している場合は、コマンドラインから変更をプッシュします。
ユーザーをマージリクエストに割り当てる
マージリクエストをユーザーに割り当てるには、マージリクエストのテキストエリアで/assign @userクイックアクションを使用するか、次のようにします:
上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
左側のサイドバーで、コード > マージリクエストを選択して、マージリクエストを見つけます。
右側のサイドバーの担当者セクションで、編集を選択します。
割り当てるユーザーを検索し、ユーザーを選択します。GitLab Freeでは、マージリクエストごとに1人のユーザーを割り当てることができます。GitLab PremiumおよびUltimateでは、複数のユーザーを割り当てることができます:
GitLabは、ユーザーの割り当てられたマージリクエストページにマージリクエストを追加します。
参加者
参加者とは、マージリクエストを操作したユーザーです。参加者の表示については、参加者を参照してください。
マージリクエストをマージする
マージリクエストのレビュープロセス中に、レビュアーは変更に関するフィードバックを提供します。レビュアーが変更に満足した場合、一部のマージチェックが失敗していても、マージリクエストを自動マージに設定できます。すべてのマージチェックに合格すると、マージリクエストは自動的にマージされ、それ以上の操作は必要ありません。
デフォルトのマージ権限:
- デフォルトブランチ(通常は
main)は保護されています。 - メンテナー以上のロールのみがデフォルトブランチにマージできます。
- デベロッパーは、保護ブランチではないブランチをターゲットとする任意のマージリクエストをマージすることができます。
特定のマージリクエストをマージする権限があるかどうかを判断するために、GitLabは以下を確認します。
- プロジェクトでのあなたのロール。(デベロッパー、メンテナー、オーナーなど)
- ターゲットブランチのブランチ保護ブランチ。
マージリクエストをクローズする
マージリクエストでの作業を完全に停止する場合は、削除するのではなく、クローズしてください。
前提条件:
- 作成者またはマージリクエストの割り当て担当者であるか、プロジェクトのデベロッパー、メンテナー、またはオーナーロールが必要です。
プロジェクトでマージリクエストをクローズするには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左側のサイドバーで、コード > マージリクエストを選択して、マージリクエストを見つけます。
- ページの下部にあるコメントボックスまでスクロールします。
- コメントボックスの後、マージリクエストをクローズを選択します。
GitLabはマージリクエストをクローズしますが、マージリクエスト、そのコメント、および関連するパイプラインのレコードを保持します。
ソースブランチを削除
マージリクエストのソースブランチを削除するには:
- マージリクエストを作成するときに、**マージリクエストが承認されたときにソースブランチを削除します。**を選択します。
- マージリクエストをマージするときに、メンテナーロールを持っている場合は、ソースブランチを削除を選択します。
- マージせずにマージリクエストをクローズするとき、ソースブランチを削除を選択します。
管理者は、プロジェクトの設定でこのオプションをデフォルトにすることができます。
自動マージを設定したユーザー、またはマージリクエストをマージするユーザーがブランチの削除を実行します。そのユーザーが、たとえばフォークしたプロジェクトなどで適切なロールを持っていない場合、ソースブランチの削除は失敗します。
ターゲットブランチのマージ時にマージリクエストを更新する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
マージリクエストはしばしば連鎖し、あるマージリクエストが別のマージリクエストで追加または変更されたコードに依存します。小規模で個別のマージリクエストをサポートするため、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にマージされます。
この機能は、マージリクエストがマージされた場合にのみ機能します。マージ後にソースブランチを削除を選択しても、オープンマージリクエストのターゲットは変更されません。この改善は、フォローアップとして提案されています。
マージリクエストのワークフロー
チームで働くソフトウェアデベロッパー向け:
- 新しいブランチをチェックアウトし、マージリクエストを通じて変更を送信します。
- チームからフィードバックを集めます。
- コード品質レポートでコードを最適化します。
- GitLab CI/CDで単体テストレポートを使用して変更を検証します。
- ライセンス承認ポリシーにより、プロジェクトと互換性のないライセンスを持つ依存関係を回避します。
- マネージャーに承認をリクエストします。
- マネージャー:
- 最終レビューでコミットをプッシュします。
- マージリクエストを承認します。
- 自動マージ(旧パイプラインが成功したときにマージ)に設定します。
- GitLab CI/CDの手動ジョブで、変更が本番環境にデプロイされます。
- あなたの実装は顧客に出荷されます。
会社のウェブサイトのウェブページを作成するウェブデベロッパー向け:
- 新しいブランチをチェックアウトし、マージリクエストを通じて新しいページを送信します。
- レビュアーからフィードバックを集めます。
- レビューアプリで変更をプレビューします。
- ウェブデザイナーに彼らの変更を実装するよう依頼します。
- マネージャーに承認をリクエストします。
- 承認後、GitLabは以下を実行します。
- コミットをスカッシュします。
- コミットをマージします。
- 変更をステージング環境にGitLab Pagesでデプロイします。
- あなたの本番環境チームは、マージコミットをチェリーピックして本番環境に組み込みます。
マージリクエストのアクティビティをフィルタリングする
マージリクエストの履歴を把握するには、アクティビティフィードをフィルタリングして、自分に関係のある項目のみを表示します。
上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
左側のサイドバーで、コード > マージリクエストを選択します。
マージリクエストを選択します。
アクティビティまでスクロールします。
ページの右側で、アクティビティをフィルタリングを選択して、フィルターオプションを表示します。すでにフィルターオプションを選択している場合、このフィールドにはアクティビティ + 他5件のように、選択内容の概要が表示されます。
表示するアクティビティのタイプを選択します。オプションには以下が含まれます。
- 担当者とレビュアー
- 承認
- ボットからのコメント
- ユーザーからのコメント
- コミットとブランチ
- 編集
- ラベル
- ロック状態
- メンション
- マージリクエストのステータス
- トラッキング
オプション。ソート( )を選択して、ソート順を逆にします。
選択内容は、すべてのマージリクエストで保持されます。また、右側のソートボタンでソート順を変更することもできます。
コメントスレッドの管理
マージリクエストでのディスカッションには、個別のコメントとコメントのスレッドが含まれます。オープン(未解決)なスレッドはマージリクエストのマージをブロックしますが、個別のコメントはブロックしません。スレッドでのディスカッションが終了したら、スレッドを解決します。これにより、表示が折りたたまれます。コメントスレッドが重要であってもマージリクエストをブロックすべきではない場合、ディスカッションを続けるためにイシューに移動します。
すべてのスレッドを展開する
GitLabは、マージリクエストの右上隅にオープンなスレッドの数を表示します。このマージリクエストには3つのオープンなスレッドがあります:
折りたたまれたスレッド内のすべてのコメントを表示するには、スレッドを展開します:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左側のサイドバーで、コード > マージリクエストを選択して、マージリクエストを見つけます。
- マージリクエストの右上にあるOpen threadsドロップダウンリストで、スレッドオプション( )を選択します。
- すべてのコメントを表示を選択します。
オープンなスレッドをイシューに移動する
オープンなスレッドを新しいイシューに移動し、マージリクエストのブロックを解除するには:
マージリクエスト内に特定のオープンなスレッドがある場合、それを個別に解決するためのイシューを作成できます:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左側のサイドバーで、コード > マージリクエストを選択して、マージリクエストを見つけます。
- マージリクエストで、移動するスレッドを検索します。
- スレッドへの最後の返信の下、スレッドを解決の横にあるスレッドを解決するためのイシューを作成( )を選択します。
- 新しいイシューのフィールドに入力し、イシューを作成するを選択します。
GitLabはスレッドを解決済みとしてマークし、マージリクエストから新しいイシューへのリンクを追加します。
マージリクエスト内に複数のオープンなスレッドがある場合、それらを個別に解決するためのイシューを作成できます:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左側のサイドバーで、コード > マージリクエストを選択して、マージリクエストを見つけます。
- マージリクエストの右上にあるOpen threadsドロップダウンリストで、スレッドオプション( )を選択します。
- 新しいイシューですべて解決するを選択します。
- 新しいイシューのフィールドに入力し、イシューを作成するを選択します。
GitLabはすべてのスレッドを解決済みとしてマークし、マージリクエストから新しいイシューへのリンクを追加します。
すべてのスレッドが解決されるまでマージを禁止する
スレッドがオープンなままである間、マージリクエストがマージされるのを防ぐことができます。この設定を有効にすると、少なくとも1つのスレッドがオープンなままである間、マージリクエストのOpen threadsカウンターがオレンジ色で表示されます。
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左側のサイドバーで、設定 > マージリクエストを選択します。
- マージチェックセクションで、すべてのスレッドが解決しているチェックボックスをオンにします。
- 変更を保存を選択します。
スレッドが古くなったときに自動的に解決する
新しいプッシュによってスレッドが記述する行が変更されたときに、マージリクエストがスレッドを自動的に解決するように設定できます。
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左側のサイドバーで、設定 > マージリクエストを選択します。
- マージオプションセクションで、期限切れになったときにマージリクエストの差分スレッドを自動的に解決しますを選択します。
- 変更を保存を選択します。
これで、プッシュによって差分セクションが古くなると、スレッドが解決されるようになります。変更されていない行のスレッドと、最上位の解決可能なスレッドは解決されません。
通知とTo Doを移動する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。
この機能フラグを有効にすると、通知ボタンとTo Doアイテムボタンがページの右上隅に移動します。
- マージリクエストでは、これらのボタンはタブの右端に表示されます。
- イシュー、インシデント、およびエピックでは、これらのボタンは右サイドバーの上部に表示されます。

