pull request を完了、破棄、または元に戻す

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

必要なすべてのレビュー担当者が pull request (PR) を承認し、その PR がすべてのブランチ ポリシー要件を満たしたら、変更をターゲット ブランチにマージし PR を完了できます。 または、PR の変更を続行しない場合は、PR を破棄できます。

レビュー担当者の変更に対処し、レビュー コメントに応答して解決するには、コメントの処理に関するページを参照してください。

前提条件

  • プロジェクトで Repos を有効にする必要があります。 Repos ハブと関連ページが表示されない場合は、Azure DevOps サービスのオンとオフを切り替えるに関するページを参照して Repos を再度有効にしてください。

  • PR を完了するには、PR が含まれるプロジェクトで、共同作成者セキュリティ グループのメンバーであるか、対応するアクセス許可を持っている必要があります。

  • PR に参加するには、閲覧者セキュリティ グループのメンバーであるか、対応するアクセス許可を持っている必要があります。

  • PR を表示または確認するには、Azure DevOps プロジェクトへの Basic 以上のアクセス権が必要です。

  • 参加したいプロジェクトのメンバーでない場合は、追加されます

    注意

    パブリック プロジェクトの場合、利害関係者アクセス権を付与されたユーザーは、Azure Repos へのフル アクセス権があります。

  • プロジェクトで Repos を有効にする必要があります。 Repos ハブと関連ページが表示されない場合は、Azure DevOps サービスのオンとオフを切り替えるに関するページを参照して Repos を再度有効にしてください。
  • PR を完了するには、変更したいプロジェクトで、共同作成者セキュリティ グループのメンバーであるか、対応するアクセス許可を持っている必要があります。
  • PR に参加するには、閲覧者セキュリティ グループのメンバーであるか、対応するアクセス許可を持っている必要があります。
  • PR を表示または確認するには、Basic 以上のアクセス権を持つ Azure DevOps プロジェクトのメンバーである必要があります。 プロジェクト メンバーでない場合は、追加してもらいます

マージ変更を確認する

PR を完了すると、Git によってメイン ブランチの末尾に新しい "マージ コミット" が追加されます。 このマージ コミットは、メイン ブランチと PR ソース ブランチの以前の履歴をリンクします。 プレビュー マージ コミットを表示し、マージ競合を確認するには、PR の [概要] ページの右上にある [その他のオプション] メニューを選択してから、[マージ変更の表示] を選択します。

PR の作成後にターゲット ブランチを変更した場合は、[マージの再開] を選択して新しいプレビュー マージ コミットを作成し、マージ変更の差分ビューを更新します。

PR の [その他のオプション] メニューの [マージの表示] オプションと [マージの再開] オプションを示すスクリーンショット。

ブランチ ポリシーを確認する

チームは、PR をマージする前に、保護されたブランチ内の PR が特定の条件を満たすことを要求するブランチ ポリシーを設定できます。 PR に有効なブランチ ポリシー、それらのポリシーがマージに必要かどうか、PR が成功しているか失敗しているかを確認できます。

PR の [概要] タブには、PR に対して成功または失敗するブランチ ポリシーがまとめられています。 概要には失敗したポリシーのみが表示されますが、[<n> 件の確認を表示] を選択すると、すべてのポリシー チェックを表示できます。

PR の [概要] ページで、ブランチ ポリシーの要件に アイコンが表示されます。 要件の横にある [その他のオプション] を選択してから、[ポリシーの表示] を選択して、[プロジェクト設定] にあるブランチの [ブランチ ポリシー] ページに移動します。

PR のブランチ ポリシー要件の横にある [ポリシーの表示] を示すスクリーンショット。

pull request を完了する

マージの競合を解決し、PR がすべてのブランチ ポリシーを満たし、必要なすべての承認を得たら、PR を完了できます。

  1. 右上にある [完了] を選択して PR を完了します。 または、[完了] ボタンの横にあるドロップダウン矢印を選択し、いずれかのオプションを選択します。

    PR の [完了] ボタンのオプションを示すスクリーンショット。

    • 完了: 今すぐ PR を完了し、変更をターゲット ブランチにマージします。
    • オートコンプリートの設定: 必要なすべてのブランチ ポリシーを満たしたら、完了してマージするように PR を構成します。
    • ドラフトとしてマーク: PR を下書き状態に戻し、すべての投票を削除します。
    • 破棄: 変更をマージせずに PR を閉じます。
  2. [Pull Request の完了] ペインの [マージの種類] で、いずれかのマージ オプションを選択します。

    [PR の完了] ダイアログを示すスクリーン ショット。

    • マージ (早送りなし): すべてのコミットを保持する非線形履歴とマージします。
    • スカッシュ コミット: すべてのソース コミットをターゲット上の 1 つのコミットに結合する線形履歴とマージするか、PR をスカッシュ マージします。 ソース ブランチからのコミット履歴を保持せずに、ターゲット ブランチに対して新しいコミットが作成されることに注意してください。
    • リベースと早送り: ターゲットへのソース コミットをリベースし、早送りします。
    • 半線形マージ: ターゲットへのソース コミットをリベースし、2 つの親のマージを作成します。

    注意

    既存のポリシーが適用されます。 たとえば、ブランチに現在 "スカッシュ マージのみ" ポリシーがある場合、別のマージの種類を使用する場合は、そのポリシーを変更する必要があります。

  3. 次のいずれかの完了後オプションを選択します。 オプションによっては、一部のマージの種類では使用できないものがあります。

    • 関連付けられた作業項目をマージ後に完了する: リンクされた作業項目をすべて完了します。
    • マージ後の <branch name> の削除: マージ後に PR のソース ブランチを削除します。
    • マージ コミット メッセージのカスタマイズ: カスタムのマージ コミット メッセージを追加します。 このオプションを選択する場合、マージ コミット メッセージを更新します。
    • ブランチ ポリシーをオーバーライドし、マージを有効にする。 PR がすべてのブランチ ポリシーを満たしているわけではない場合でも、マージを強制します。 このオプションは、ポリシーの適用から除外アクセス許可がある場合にのみ選択できます。
  4. [マージの完了] を選択します。

  1. 右上にある [完了] を選択して PR を完了します。 または、[完了] ボタンの横にあるドロップダウン矢印を選択し、次のいずれかのオプションを選択します。

    PR の [完了] ボタンのオプションを示すスクリーンショット。

    • 完了: 今すぐ PR を完了し、変更をターゲット ブランチにマージします。
    • オートコンプリートの設定: ブランチ ポリシーがある場合、必要なすべてのブランチ ポリシーを満たしたら、完了してマージするように PR を構成します。
    • 破棄: 変更をマージせずに PR を閉じます。
  2. [Pull Request の完了] 画面で、マージ コミットのメッセージを入力し、PR の説明を更新します。

    [Pull Request の完了] ダイアログ

  3. 次のいずれかのオプションをクリックします。

    • リンクされた作業項目をマージ後に完了して、リンクされた作業項目をすべて完了します。

    • マージ後に <branch name> を削除して、PR からソース ブランチを削除します。

    • マージする場合にスカッシュが変更して、PR をスカッシュ マージします。 ソース ブランチからのコミット履歴を保持せずに、ターゲット ブランチに対して新しいコミットが作成されることに注意してください。

    • ブランチ ポリシーをオーバーライドし、マージを有効にして、すべてのブランチ ポリシーを満たしているわけではない場合でも、ブランチを強制的にマージします。 このオプションは、ポリシーの適用から除外アクセス許可がある場合にのみ選択できます。

      注意

      既存のポリシーは引き続き適用されます。 たとえば、ブランチに現在 "スカッシュ マージのみ" ポリシーが設定されている場合、他のマージの種類を使用するために、そのポリシーを編集する必要があります。

  4. [マージの完了] を選択します。

マージを完了すると、リンクされた作業項目が自動的に更新され、PR 完了が表示されます。

完了した PR を示すリンクされた作業項目のスクリーンショット。

PR 完了時にリベースする

状況によっては、PR 完了時のリベースができない場合があります。

  • ターゲット ブランチのポリシーによりリベース戦略が使用できない場合は、リベースするには、ブランチ ポリシーをオーバーライドするアクセス許可が必要です。
  • PR ソース ブランチにポリシーがある場合、リベースできません。 リベースでは、ポリシー承認プロセスを経ずにソース ブランチが変更されます。
  • マージ競合拡張機能を使用してマージ競合を解決した場合、リベースできません。 すべての PR コミットを個別にリベースする場合、3 方向マージに適用される競合の解決はほとんど成功せず、有効でもありません。

このような場合でも常に、ブランチをローカルにリベースしてからアップストリームにプッシュするか、PR の完了時に変更をスカッシュ マージすることができます。

複数のマージ ベースの問題

場合によっては、PR に複数の真のマージ ベースがあり、このような状況によってセキュリティの問題が発生する可能性があります。 PR 内のファイルのバージョンがマージ ベース間で異なる場合、複数のマージ ベースの警告が発生します。 詳細と修復については、「複数のマージ ベース」をご覧ください。

マージ競合を解決する

ブランチでのファイルの変更は、別のブランチでの変更と競合する可能性があります。 変更をマージする方法が明確でない場合、Git は PR の [概要] ページに競合するファイルを表示します。 PR をマージするか、PR をオートコンプリートに設定する前に、PR ブランチとターゲット ブランチの間の "マージ競合" を解決する必要があります。 マージの競合を解決する方法については、「マージの競合を解決する」をご覧ください。

PR の [概要] タブでマージ競合を示すスクリーンショット。

pull request をオートコンプリートに設定する

[完了] ドロップダウン リストから [オートコンプリートの設定] を選択して、条件がすべてのブランチ ポリシーを満たしたらすぐに PR の変更を完了してマージします。 PR が完了すると、電子メール通知が表示されます。 競合またはエラーによって PR の完了が妨げられる場合は、メールで問題が通知されます。

注意

ブランチ ポリシーがある場合、[オートコンプリートの設定] オプションは Azure Repos および TFS 2017 以降で使用できます。 [オートコンプリートの設定] が表示されない場合、ブランチ ポリシーがありません。 詳細については、ブランチ ポリシーに関するページを参照してください。

既定では、オートコンプリートに設定されている PR は、必須ポリシーのみを待機します。 [オート コンプリートの有効化] パネルで、オプションのポリシーも待機することを選択できます。

[オート コンプリートの有効化] パネルでオプションのポリシーを必須に変更することを示すスクリーンショット。

TFS 2018 Update 2 以降、PR の [概要] ページに、PR が待機している未処理のポリシー条件の一覧が表示されます。 [オート コンプリートの有効化] パネルでポリシーを必須に設定した場合は、[概要] ページでオプションに戻すことができます。

オートコンプリートをオフにするには、[オートコンプリートをキャンセルする] を選択します。

オートコンプリート状態の PR のスクリーンショット。

オートコンプリート状態の PR のスクリーンショット。

オートコンプリートに設定された PR では、[Pull requests] ページにオートコンプリート バッジが表示されます。

PR 一覧のオートコンプリート PR を示すスクリーンショット。

pull request を破棄または再アクティブ化する

マージせずに変更と PR を破棄するには、[完了] ボタンのドロップダウン リストから [破棄] を選択します。 破棄された PR は引き続き表示でき、作業項目にリンクされたままです。

破棄された PR をいずれかの時点で再アクティブ化するには、[Pull Request] ビューの [破棄済み] タブから PR を開き、右上にある [再アクティブ化] を選択します。

完了した pull request を元に戻す

PR の変更を元に戻すには、次の手順に従います。 詳細については、「変更を元に戻す」を参照してください。

  1. 完了した PR を開き、[元に戻す] を選択します。 このアクションにより作成される新しいブランチには、リポジトリ内の既存のターゲット ブランチで PR を元に戻す変更が含まれます。

  2. [Pull request を元に戻す] ペインで、次の手順を実行します。

    1. [ターゲット ブランチ] で、PR の変更を元に戻すブランチを選択します。
    2. [トピック ブランチ名が必要です] で、必要に応じて元に戻す PR ブランチ名を変更します。
    3. [元に戻す] を選択します。
  3. [新しい pull request] 画面で [作成] を選択します。

  4. 新しい PR をマージして、元に戻します。

注意

この元に戻す際に作成されたブランチには、元の PR からのすべてのファイル変更を元に戻す 1 つのコミットがあります。 ブランチには、元の PR のコミットごとに元に戻されたコミットは含まれません。

次のステップ