マージリクエストを作成する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
マージリクエストを作成する準備ができたら、ワークフローに合った方法を使用してください。マージリクエストを作成できます:
- GitLab UIで。
- コマンドラインから、
glab mrコマンド、またはGitコマンドとプッシュオプションを組み合わせて。 - Visual Studio Code拡張機能で。
- メールを送信して。
- マージリクエストAPIを使用します。
マージリクエストを作成すると、GitLabはプロジェクトのブランチ命名規則を適用します。マージリクエストをブランチに接続するには、ブランチ命名パターンに従ってください。
トップバーから
プロジェクトのトップバーからマージリクエストを作成できます:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 右上隅で、新規作成 ( ) と新しいマージリクエストを選択します。
マージリクエストリストから
マージリクエストのリストからマージリクエストを作成できます。
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左サイドバーで、コード > マージリクエストを選択します。
- 右上隅で、新しいマージリクエストを選択します。
- ソースブランチとターゲットブランチを選択し、ブランチを比較して続行するを選択します。
- 新しいマージリクエストページのフィールドに必要事項を入力し、マージリクエストを作成を選択します。
各ブランチを関連付けることができるのは、1つのオープンなマージリクエストのみです。このブランチのマージリクエストがすでに存在する場合、既存のマージリクエストへのリンクが表示されます。
イシューから
開発ワークフローで、すべてのマージリクエストにイシューが必要な場合、イシューから直接ブランチを作成することでスピードアップできます。新しいブランチと、後でそのマージリクエストは、このイシューに関連付けられているというマークが付きます。マージリクエストをマージすると、自動イシュークローズが無効にされていない限り、イシューは自動的に閉じられます。
イシューからの新規ブランチ
ブランチとマージリクエストを同時に作成するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- Plan > 作業アイテムを選択し、タイプ = Issueでフィルタリングして、目的のイシューを選択します。
- イシューの説明の一番下まで移動します。
- マージリクエストを作成 > マージリクエストとブランチを作成を選択します。
- ダイアログで、提案されたブランチ名をレビューします。これは、プロジェクトのブランチ名テンプレートに基づいています。
- オプション。ブランチ名がすでに使用されている場合、または別のブランチ名が必要な場合は、名前を変更します。
- ソースブランチまたはタグを選択します。
- マージリクエストを作成を選択します。
イシューからの既存ブランチ
前提条件:
- ブランチがイシューにすでにリンクされている必要があります。
- プロジェクトでマージリクエストを作成する権限が必要です。
ブランチが開発にすでにリンクされている場合に、マージリクエストを作成するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- Plan > 作業アイテムを選択し、タイプ = Issueでフィルタリングして、目的のイシューを選択します。
- 開発セクションで、リンクされているブランチを見つけます。
- ブランチアクションメニュー ( ) を選択します。
- マージリクエストを作成を選択します。
- 新しいマージリクエストページのフィールドに必要事項を入力し、マージリクエストを作成を選択します。
マージリクエストフォームには、イシューにリンクするための適切なキーワードが事前に入力されています。
タスクから作成する
チームがイシューをタスクに分割する場合、タスクから直接ブランチを作成して、プロセスを高速化できます。新しいブランチと、後でそのマージリクエストは、このタスクに関連付けられているというマークが付きます。マージリクエストをマージすると、自動イシュークローズが無効にされていない限り、タスクは自動的に閉じられます。
タスクからの新規ブランチ
前提条件:
- タスクを含むプロジェクトのデベロッパー、メンテナー、またはオーナーロールが必要です。
ブランチとマージリクエストを同時に作成するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- Plan > 作業アイテムを選択し、タイプ = タスクでフィルタリングして、目的のタスクを選択します。
- タスクの説明の一番下まで移動します。
- マージリクエストを作成を選択します。
- ダイアログで、提案されたブランチ名をレビューします。これは、プロジェクトのブランチ名テンプレートに基づいています。
- オプション。ブランチ名がすでに使用されている場合、または別のブランチ名が必要な場合は、名前を変更します。
- ソースブランチまたはタグを選択します。
- マージリクエストを作成を選択します。
タスクからの既存ブランチ
前提条件:
- ブランチがタスクにすでにリンクされている必要があります。
- プロジェクトでマージリクエストを作成する権限が必要です。
ブランチが開発にすでにリンクされている場合に、マージリクエストを作成するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- Plan > 作業アイテムを選択し、タイプ = タスクでフィルタリングして、目的のタスクを選択します。
- 開発セクションで、リンクされているブランチを見つけます。
- ブランチアクションメニュー ( ) を選択します。
- マージリクエストを作成を選択します。
- 新しいマージリクエストページのフィールドに必要事項を入力し、マージリクエストを作成を選択します。
マージリクエストフォームには、タスクにリンクするための適切なキーワードが事前に入力されています。
Gitリポジトリが空の場合
Gitリポジトリが空の状態でイシューまたはタスクからマージリクエストを作成した場合、GitLabは次の処理を行います:
- デフォルトブランチを作成します。
- 空白の
README.mdファイルをコミットします。 - イシューまたはタスクのタイトルに基づいて新しいブランチを作成し、そのブランチにリダイレクトします。
- プロジェクトがKubernetesのようなデプロイサービスで構成されている場合、
.gitlab-ci.ymlファイルを作成するのに役立つ自動デプロイの設定を促します。
イシューとタスクの自動クローズ
作成するブランチの名前がイシューまたはタスク番号でプレフィックスされている場合、GitLabはイシューまたはタスクとマージリクエストをクロスリンクし、マージリクエストの説明にクローズパターンを追加します。ほとんどの場合、これはCloses #IDのようになり、IDはイシューまたはタスクのIDです。プロジェクトがクローズパターンで構成されている場合、マージリクエストがマージされると、イシューまたはタスクは閉じられます。
Webエディタから
Webエディタを使用すると、以下の際にマージリクエストを作成できます:
- ファイルを作成、編集、アップロード、または削除する。
- ディレクトリを作成する。
ブランチを作成する場合
ブランチを作成する際、マージリクエストを作成できます。
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左サイドバーで、コード > ブランチを選択します。
- ブランチ名を入力して、新しいブランチを選択します。
- ファイルリストの上にあるマージリクエストの作成を選択します。マージリクエストが作成されます。デフォルトブランチがターゲットです。
- フィールドに入力し、マージリクエストの作成を選択します。
フォークで作業する場合
フォークからマージリクエストを作成して、メインプロジェクトにコントリビュートできます。
トップバーで検索または移動先を選択し、フォークを見つけます。
左サイドバーで、コード > マージリクエストを選択し、新しいマージリクエストを選択します。
ソースブランチに対しては、変更を含むフォーク内のブランチを選択します。
ターゲットブランチの場合:
フォークではなく、アップストリームリポジトリを選択します。アップストリームに頻繁にコントリビュートする場合は、フォークのデフォルトターゲットを設定することを検討してください。
アップストリームリポジトリからブランチを選択します。
フォークの表示レベルが親リポジトリよりも制限されている場合、ターゲットブランチはフォークのデフォルトブランチになります。これにより、フォーク内のプライベート情報が公開されることがなくなります。
ブランチを比較して続行するを選択します。
マージリクエストを作成を選択します。マージリクエストは、フォークではなく、ターゲットリポジトリに作成されます。
デベロッパー、メンテナー、またはオーナーロールが割り当てられている場合は、希望するアサイン担当者、レビュアー、ラベル、およびマイルストーンを追加します。
マージリクエストを送信を選択します。
マージリクエストが別のリポジトリをターゲットとする場合、次が使用されます。
- ターゲットプロジェクトの承認ルール。
- フォークのCI/CD設定、リソース、およびプロジェクトCI/CD変数。
アップストリームプロジェクトでCI/CDパイプラインを実行するには、そのプロジェクトのメンバーである必要があります。フォークからのマージリクエストに対し、親プロジェクトでマージリクエストパイプラインを実行すると、すべての変数がパイプラインで利用可能になります。
作業がマージされ、それ以上のコントリビューションを行う予定がない場合は、フォークとそのアップストリームリポジトリとのリンクを解除します。
デフォルトのターゲットプロジェクトを設定する
デフォルトでは、フォークから送信されたマージリクエストは、フォークではなくアップストリームリポジトリをターゲットとします。アップストリームリポジトリではなく、フォークされたリポジトリをデフォルトのターゲットとして設定できます。
前提条件:
- フォークで作業している。
- デベロッパー、メンテナー、またはオーナーロールを持っているか、プロジェクトでマージリクエストを作成することを許可されている必要があります。
- アップストリームリポジトリでマージリクエストを作成できる。
- フォークの表示レベル設定の厳格度が、アップストリームリポジトリ以下である。例: フォークがプライベートで、アップストリームがパブリックの場合、この設定は表示されません。
これを行うには、次の手順を実行します:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > マージリクエストを選択します。
- ターゲットプロジェクトセクションで、デフォルトのターゲットプロジェクトに使用するオプションを選択します。
- 変更を保存を選択します。
メールを送信する
メールメッセージをGitLabに送信することにより、マージリクエストを作成できます。マージリクエストのターゲットブランチは、リポジトリのデフォルトブランチです。
前提条件:
- マージリクエストが、アップストリームリポジトリではなく、現在のリポジトリをターゲットとしている。
- GitLab 管理者が、受信メールを設定している。この設定はGitLab.comで有効になっています。
- GitLab 管理者が、メールによる返信を設定している。この設定はGitLab.comで有効になっています。
- デベロッパー、メンテナー、またはオーナーロールを持っているか、プロジェクトでマージリクエストを作成することを許可されている必要があります。
メールを送信してマージリクエストを作成するには:
上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
左サイドバーで、コード > マージリクエストを選択します。
プロジェクトにマージリクエストが含まれている場合は、Email merge request to this projectを選択します。
ダイアログで、表示されているメールアドレスをコピーします。このアドレスをプライベートにしてください。それを持っている人は誰でも、本人になりすましたり、イシューとマージリクエストを作成したりできます。
メールを開き、次の情報を含むメッセージを作成します。
- 宛先は、コピーしたメールアドレスです。
- 件名は、ソースブランチ名です。
- メールの本文は、マージリクエストの説明です。
コミットを追加するには、
.patchファイルをメッセージに添付します。メールを送信します。
マージリクエストが作成されます。
メールでマージリクエストを作成する際に添付ファイルを追加する
パッチをメールの添付ファイルとして追加することにより、マージリクエストにコミットを追加します。
- パッチの合計サイズは2 MB以下である必要があります。
- パッチと見なされるには、添付ファイルのファイル名の最後が
.patchである必要があります。 - パッチは、名前順に処理されます。
- 件名からのソースブランチが存在しない場合、リポジトリの
HEAD、またはデフォルトのターゲットブランチから作成されます。ターゲットブランチを手動で変更するには、/target_branchクイックアクションを使用します。 - ソースブランチがすでに存在する場合、パッチがその上に適用されます。
関連トピック
トラブルシューティング
イシューでマージリクエストを作成するオプションがない
マージリクエストオプションがイシューに表示されないのは、次のような場合です。
- 同じ名前のブランチがすでに存在する。
- このブランチのマージリクエストがすでに存在している。
- プロジェクトにアクティブなフォーク関係がある。
- プロジェクトがプライベートで、イシューが機密である。
このボタンを表示するために考えられる回避策の1つは、プロジェクトのフォーク関係を削除すること削除後、フォーク関係を復元することはできません。プロジェクトでは、ソースプロジェクト、またはその他のフォークとの間でマージリクエストを送受信できなくなります。
メールメッセージを処理できませんでした
マージリクエストを作成するためにメールを送信し、アップストリームリポジトリをターゲットにしようとすると、GitLabがこのエラーメッセージを返します。
Unfortunately, your email message to GitLab could not be processed.
You are not allowed to perform this action. If you believe this is in error, contact a staff member.