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

