

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS CodeCommit リポジトリでのプルリクエストの使用
<a name="pull-requests"></a>

プルリクエストは、お客様と他のリポジトリーユーザーが、ブランチから別のブランチへのコード変更を確認、コメント、およびマージすることができる主な方法です。プルリクエストを使用すると、わずかな変更や修正、主要な機能の追加、リリースされたソフトウェアの新しいバージョンのコード変更を共同で確認することができます。プルリクエストの考えられるワークフローを以下に示します。

MyDemoRepo というリポジトリで作業するデベロッパーの Li Juan は、製品の今後のバージョンの新機能を開発したいと考えています。作業を本稼働環境に使用できるコードから分離するために、彼女はブランチをデフォルトブランチから作成し、それを *feature-randomizationfeature* と命名します。コードを書き込み、コミットし、このブランチに新機能コードをプッシュします。変更をデフォルトブランチにマージする前に、他のリポジトリーユーザーに、品質のためにコードを確認してほしいと考えます。これを行うために、プルリクエストを作成します。プルリクエストには、作業ブランチと、変更をマージする予定のコードのブランチ (この場合はデフォルトブランチ) との比較が含まれています。また、プルリクエストを承認するために指定した数のユーザーをリクエストする承認ルールを作成することもできます。また、ユーザーの承認プールを指定することもできます。他のユーザーは、自分のコードと変更内容を確認し、コメントや提案を追加します。コメントに応じてコードの変更を加えて作業ブランチを何度も更新するかもしれません。彼女の変更は、CodeCommit のブランチにプッシュされるたびにプルリクエストに組み込まれます。プルリクエストが開かれている間に、意図した送信先ブランチに加えられた変更を組み込むこともできるため、ユーザーは提案されたすべての変更をコンテキストで確実に確認できます。レビュー担当者が満足し、承認ルールの条件（存在する場合）が満たされると、レビュー担当者またはレビュー担当者の 1 人がコードをマージして、プルリクエストをクローズします。

![\[プルリクエストの作成\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-pull-request-create.png)


プルリクエストには 2 つのブランチが必要です。レビューするコードを含む送信元ブランチと、レビュー済みのコードをマージする送信先ブランチです。送信元ブランチには、AFTER コミットが含まれています。これは、送信先ブランチにマージする変更が含まれるコミットです。送信先ブランチには、BEFORE コミットが含まれています。これは、コードの「前」の状態を表しています（プルリクエストブランチが送信先ブランチにマージされる前）。マージ戦略の選択は、CodeCommit コンソール内の送信元ブランチと送信先ブランチ間でどのようにコミットがマージされるかについての詳細に影響します。CodeCommit 内でのマージ戦略の詳細については、[プルリクエストをマージする (コンソール)](how-to-merge-pull-request.md#how-to-merge-pull-request-console) を参照してください。

![\[コミット前とコミット後の関係を示す、プルリクエストの送信元ブランチと送信先ブランチ\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-pull-request-concepts.png)


プルリクエストには、プルリクエストの作成時に送信元ブランチの先端と送信先ブランチの最新コミット間の相違点が表示されるため、ユーザーは変更を表示してコメントを追加できます。送信元ブランチへの変更をコミットしてプッシュすることによって、コメントに応じてプルリクエストに更新できます。

![\[プルリクエスト内の行に対するコメントの追加。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-pull-request-comment.png)


コードが確認され、承認ルールの要件（ある場合）が満たされたら、次のいずれかの方法でプルリクエストをクローズすることができます。
+ ブランチをローカルでマージし、変更をプッシュします。これにより、早送りマージ戦略が使用され、マージの競合がない場合、リクエストは自動的に閉じられます。
+  AWS CodeCommit コンソールを使用して、マージせずにプルリクエストを閉じたり、マージの競合を解決したり、競合がない場合は、利用可能なマージ戦略のいずれかを使用してブランチを閉じてマージしたりできます。
+  AWS CLIを使用します。

プルリクエストを作成する前に、次の操作を実行します。
+ レビュー対象であるコードの変更をブランチ (送信元ブランチ) にコミットしてプッシュしたことを確認する。
+ 他のユーザーにプルリクエストとその変更について通知できるようにリポジトリの通知を設定する (このステップはオプションですが推奨されます)。
+ 承認ルールテンプレートを作成してリポジトリに関連付けます。これにより、コードの品質を確保するためにプルリクエストに対して承認ルールが自動的に作成されます。詳細については、「[承認ルールテンプレートの操作](approval-rule-templates.md)」を参照してください。

プルリクエストは、アマゾン ウェブ サービスアカウントのリポジトリユーザー用に IAM ユーザーを設定するとさらに効果的です。どのユーザーがどのコメントを行ったかを簡単に識別できます。もう 1 つの利点は、IAM ユーザーがリポジトリへのアクセスに Git 認証情報を使用できることです。詳細については、「[ステップ 1: CodeCommit の初期設定](setting-up-gc.md#setting-up-gc-account)」を参照してください。フェデレーティッドアクセスユーザーを含む他の種類のユーザーとのプルリクエストを使用できます。

CodeCommit でリポジトリの他の部分を操作する方法については、[ リポジトリを操作する](repositories.md)、[承認ルールテンプレートの操作](approval-rule-templates.md) 、[ファイルの操作](files.md)、[コミットの操作](commits.md)、[ブランチの操作](branches.md)、および [ユーザー設定の操作](user-preferences.md) を参照してください。

**Topics**
+ [プルリクエストの作成](how-to-create-pull-request.md)
+ [プルリクエストの承認ルールを作成する](how-to-create-pull-request-approval-rule.md)
+ [AWS CodeCommit リポジトリでプルリクエストを表示する](how-to-view-pull-request.md)
+ [プルリクエストのレビュー](how-to-review-pull-request.md)
+ [プルリクエストの更新](how-to-update-pull-request.md)
+ [プルリクエストの承認ルールを編集または削除する](how-to-edit-delete-pull-request-approval-rule.md)
+ [プルリクエストの承認ルールの上書き](how-to-override-approval-rules.md)
+ [AWS CodeCommit リポジトリでプルリクエストをマージする](how-to-merge-pull-request.md)
+ [AWS CodeCommit リポジトリ内のプルリクエストの競合を解決する](how-to-resolve-conflict-pull-request.md)
+ [AWS CodeCommit リポジトリでプルリクエストを閉じる](how-to-close-pull-request.md)

# プルリクエストの作成
<a name="how-to-create-pull-request"></a>

プルリクエストを作成すると、他のユーザーがコード変更を他のブランチにマージする前にそのコードの変更を確認するのに役立ちます。まず、コード変更のためのブランチを作成します。これは、プルリクエストのソースブランチとして参照されます。変更をコミットしてリポジトリにプッシュすると、そのブランチ (送信元ブランチ) の内容と、プルリクエストがクローズされた後の変更をマージするブランチ (送信先ブランチ) とを比較するプルリクエストを作成できます。

AWS CodeCommit コンソールまたは AWS CLI を使用してリポジトリのプルリクエストを作成できます。

**Topics**
+ [プルリクエストを作成する (コンソール)](#how-to-create-pull-request-console)
+ [プルリクエストを作成する (AWS CLI)](#how-to-create-pull-request-cli)

## プルリクエストを作成する (コンソール)
<a name="how-to-create-pull-request-console"></a>

CodeCommit コンソールを使用して、CodeCommit リポジトリにプルリクエストを作成できます。リポジトリに[通知が設定されている](how-to-repository-email.md)場合は、プルリクエストを作成すると、登録ユーザーに E メールが送信されます。

1. [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) で CodeCommit コンソールを開きます。

1. **リポジトリ**で、プルリクエストを作成するリポジトリの名前を選択します。

1. ナビゲーションペインで、[**Pull Requests (プルリクエスト)**] を選択します。
**ヒント**  
また、プルリクエストは、[**Branches**] や [**Code**] から作成することもできます。

1. [**Create pull request**] を選択します。  
![\[CodeCommit コンソールの [Pull Requests] (プルリクエスト) ページでプルリクエストを作成します。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-pull-request-view.png)

1. [**Create pull request**] の [**Source**] で、レビューする変更が含まれるブランチを選択します。

1. [**送信先**] で、プルリクエストがクローズされた際にコード変更をマージするブランチを確認します。

1. [**Compare**] を選択します。比較は 2 つのブランチで実行され、それらの違いが表示されます。また、プルリクエストがクローズされたときに 2 つのブランチが自動的にマージできるかどうかを判断するための分析も実行されます。

1. 比較の詳細と変更を確認し、プルリクエストにレビューする変更とコミットが含まれていることを確かめます。含まれていない場合、送信元と送信先のブランチを選択してから、再度 [**Compare**] を選択します。

1. 比較結果に問題がなければ、[**Title**] に、このレビューの説明を示すタイトルを入力します。これは、リポジトリのプルリクエストのリストに表示されるタイトルです。

1. (オプション) [**Description (説明)**] に、このレビューに関する詳細やレビューアにとって有益な情報を入力します。

1. [**Create**] を選択します。  
![\[プルリクエストの作成\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-pull-request-create.png)

プルリクエストは、リポジトリのプルリクエストのリストに表示されます。[通知を設定した](how-to-repository-email.md)場合は、Amazon SNS トピックの受信者に新しく作成されたプルリクエストに関する情報が E メールで送信されます。

## プルリクエストを作成する (AWS CLI)
<a name="how-to-create-pull-request-cli"></a>

CodeCommit で AWS CLI コマンドを使用するには、AWS CLI をインストールします。詳細については、「[コマンドラインリファレンス](cmd-ref.md)」を参照してください。

**AWS CLI を使用して CodeCommit リポジトリにプルリクエストを作成するには**
+ 次のように指定して **create-pull-request** コマンドを実行します。
  + プルリクエストの名前 (**--title** オプションを指定)。
  + プルリクエストの説明 (**--description** オプションを指定)。
  + **create-pull-request** コマンドのターゲットのリストは次の通りです。
    + プルリクエストが作成される CodeCommit リポジトリの名前 (**repositoryName** 属性付き)。
    + ソースブランチとも呼ばれるレビューするコードの変更を含むブランチの名前 (**sourceReference** 属性を使用)。
    + (オプション) デフォルトのブランチにマージしたくない場合は送信先ブランチとも呼ばれるコード変更をマージする予定のブランチの名前 (**destinationReference** 属性を使用)。
  + 冪等性の一意、クライアントで生成されたトークン (**--client-request-token** オプションを指定)。

  この例では、*発音難易度アナライザー*という名前のプルリクエストを作成し、*jane-branch* ソースブランチを対象とする*火曜日までにこれらの変更を確認してください*という説明を追加します。プルリクエストは、`MyDemoRepo` という名前の CodeCommit リポジトリのデフォルトのブランチ *main* にマージされます。

  ```
  aws codecommit create-pull-request --title "Pronunciation difficulty analyzer" --description "Please review these changes by Tuesday" --client-request-token 123Example --targets repositoryName=MyDemoRepo,sourceReference=jane-branch 
  ```

# プルリクエストの承認ルールを作成する
<a name="how-to-create-pull-request-approval-rule"></a>

プルリクエストの承認ルールを作成すると、コードを送信先ブランチにマージする前にプルリクエストの承認をユーザーにリクエストできるため、コードの品質が保証されます。プルリクエストを承認する必要があるユーザーの数を指定できます。ルールのユーザーの承認プールを指定することもできます。その場合、それらのユーザーからの承認のみがルールに必要な承認数にカウントされます。

**注記**  
また、承認ルールテンプレートを作成することもできます。これにより、リポジトリ間であらゆるプルリクエストに適用される承認ルールの作成を自動化できます。詳細については、「[承認ルールテンプレートの操作](approval-rule-templates.md)」を参照してください。

 AWS CodeCommit コンソールまたは を使用して AWS CLI 、リポジトリの承認ルールを作成できます。

**Topics**
+ [プルリクエストの承認ルールを作成する (コンソール)](#how-to-create-pull-request-approval-rule-console)
+ [プルリクエストの承認ルールを作成する (AWS CLI)](#how-to-create-pull-request-approval-rule-cli)

## プルリクエストの承認ルールを作成する (コンソール)
<a name="how-to-create-pull-request-approval-rule-console"></a>

CodeCommit コンソールを使用して、CodeCommit リポジトリ内のプルリクエストの承認ルールを作成できます。

1. [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) で CodeCommit コンソールを開きます。

1. [**Repositories (リポジトリ)**] で、プルリクエストの承認ルールを作成するリポジトリの名前を選択します。

1. ナビゲーションペインで、[**Pull Requests (プルリクエスト)**] を選択します。

1. 承認ルールを作成するプルリクエストをリストから選択します。オープンプルリクエストの承認ルールのみを作成できます。  
![\[CodeCommit コンソールのリポジトリのプルリクエストのリスト。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-pull-request-view.png)

1. プルリクエストで、[**Approvals (承認)**] を選択し、[**Create approval rule (承認ルールの作成)**] を選択します。

1. [**Rule name (ルール名)**] で、ルールにわかりやすい名前を付けます。たとえば、プルリクエストをマージする前に 2 人のユーザーにプルリクエストの承認をリクエストする場合は、ルールに **Require two approvals before merge** という名前を付けます。
**注記**  
承認ルールの作成後に名前を変更することはできません。

   [**Number of approvals needed (必要な承認の数)**] に、必要な数値を入力します。デフォルトは 1 です。  
![\[プルリクエストの承認ルールの作成\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-create-approval-rule.png)

1. （オプション）プルリクエストの承認を特定のユーザーグループからリクエストする場合は、[**Approval rule members (承認ルールのメンバー)**] で [**Add (追加)**] を選択します。[**Approver type (承認者のタイプ)**] で、次のいずれかを選択します。
   + [**IAM user name or assumed role**] (IAM ユーザー名または引き受けたロール): このオプションでは、サインインに使用したアカウントが AWS アカウント ID に事前入力され、名前のみが必要です。指定された名前と名前が一致する IAM ユーザーおよびフェデレーティッドアクセスユーザーの両方に使用できます。これは非常に強力なオプションで、柔軟性が大きく高まります。例えば、Amazon Web Services アカウント 123456789012 でサインインしてこのオプションを選択し、**Mary\$1Major** を指定した場合、次のすべてがそのユーザーからの承認としてカウントされます。
     + アカウントの IAM ユーザー (`arn:aws:iam::123456789012:user/Mary_Major`)
     + Mary\$1Major として IAM で識別されるフェデレーティッドユーザー (`arn:aws:sts::123456789012:federated-user/Mary_Major`)

     このオプションは、ワイルドカード (**CodeCommitReview**) を指定しない限り、ロールセッション名が Mary\$1Major (`arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major`) の `*Mary_Major` のロールを引き受けるユーザーのアクティブなセッションを認識しません。ロール名を明示的に指定することもできます (`CodeCommitReview/Mary_Major`)。
   + [**Fully qualified ARN**] (完全修飾 ARN): このオプションでは、IAM ユーザーまたはロールの完全修飾 Amazon リソースネーム (ARN) を指定できます。このオプションは、 AWS Lambda や などの他の AWS のサービスで使用される引き受けたロールもサポートします AWS CodeBuild。委任ロールの ARN 形式は、ロールの場合は `arn:aws:sts::AccountID:assumed-role/RoleName`、関数の場合は `arn:aws:sts::AccountID:assumed-role/FunctionName` です。

   承認者のタイプとして [**IAM user name or assumed role**] (IAM ユーザー名または引き受けたロール) を選択した場合は、[**Value**] (値) に、IAM ユーザーまたはロールの名前またはユーザーかロールの完全修飾 ARN を入力します。承認が必要な承認の数にカウントされるすべてのユーザーまたはロールを追加するまで、[**Add (追加)**] を再度選択してユーザーまたはロールを追加します。

   どちらの承認者タイプでも、値にワイルドカード (\$1) を使用できます。例えば、[**IAM user name or assumed role**] (IAM ユーザー名または引き受けたロール) オプションを選択し、**CodeCommitReview/\$1** を指定した場合、**CodeCommitReview** のロールを引き受けるすべてのユーザーが承認プールにカウントされます。個々のロールセッション名は、必要な承認者数にカウントされます。このようにして、Mary\$1Major と Li\$1Juan は、サインインして `CodeCommitReview` のロールを引き受けるときに承認としてカウントされます。IAM ARN、ワイルドカード、および形式の詳細については、[IAM 識別子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)を参照してください。
**注記**  
承認ルールは、クロスアカウント承認をサポートしていません。

1. 承認ルールの設定が完了したら、[**Submit (送信)**] を選択します。

 

## プルリクエストの承認ルールを作成する (AWS CLI)
<a name="how-to-create-pull-request-approval-rule-cli"></a>

CodeCommit で AWS CLI コマンドを使用するには、 をインストールします AWS CLI。詳細については、「[コマンドラインリファレンス](cmd-ref.md)」を参照してください。

## CodeCommit リポジトリのプルリクエストの承認ルールを作成するには

+ 次のように指定して **create-pull-request-approval-rule** コマンドを実行します。
  + プルリクエストの ID (**--id** オプションを指定)。
  + 承認ルールの名前（**--approval-rule-name** オプション付き）。
  + 承認ルールの内容（**--approval-rule-content** オプション付き）。

  承認ルールを作成するときに、次のいずれかの方法で承認プールの承認者を指定できます。
  + **CodeCommitApprovers**: このオプションでは、アマゾン ウェブ サービスアカウントとリソースのみが必要です。指定されたリソース名と一致する名前を持つ IAM ユーザーとフェデレーティッドアクセスユーザーの両方に使用できます。これは非常に強力なオプションで、柔軟性が大きく高まります。例えば、アマゾン ウェブ サービスアカウント 123456789012 と **Mary\$1Major** を指定した場合、次のすべてがそのユーザーからの承認としてカウントされます。
    + アカウントの IAM ユーザー (`arn:aws:iam::123456789012:user/Mary_Major`)
    + Mary\$1Major として IAM で識別されるフェデレーティッドユーザー (`arn:aws:sts::123456789012:federated-user/Mary_Major`)

    このオプションは、ワイルドカード (**CodeCommitReview**) を指定しない限り、ロールセッション名が Mary\$1Major (`arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major`) の `*Mary_Major` のロールを引き受けるユーザーのアクティブなセッションを認識しません。
  + [**Fully qualified ARN**] (完全修飾 ARN): このオプションでは、IAM ユーザーまたはロールの完全修飾 Amazon リソースネーム (ARN) を指定できます。

  IAM ARN、ワイルドカード、および形式の詳細については、[IAM 識別子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)を参照してください。

  次の例では、ID が `27` のプルリクエストの `Require two approved approvers` という名前の承認ルールを作成します。ルールは、承認プールから 2 つの承認が必要であることを指定します。プールには、CodeCommit にアクセスし、`123456789012` アマゾン ウェブ サービスアカウントで **CodeCommitReview** のロールを引き受けるすべてのユーザーが含まれます。また、同じ アマゾン ウェブ サービスアカウントに IAM ユーザーまたは `Nikhil_Jayashankar` という名前のフェデレーティッドユーザーも含まれます。

  ```
  aws codecommit create-pull-request-approval-rule --pull-request-id 27 --approval-rule-name "Require two approved approvers" --approval-rule-content "{\"Version\": \"2018-11-08\",\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"CodeCommitApprovers:123456789012:Nikhil_Jayashankar\", \"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}"
  ```

# AWS CodeCommit リポジトリでプルリクエストを表示する
<a name="how-to-view-pull-request"></a>

 AWS CodeCommit コンソールまたは を使用して AWS CLI 、リポジトリのプルリクエストを表示できます。デフォルトでは、開いているリクエストのみ表示されますが、フィルターを変更して、すべてのプルリクエスト、閉じているリクエストのみ、作成したプルリクエストのみなどを表示できます。

**Topics**
+ [プルリクエストを表示する (コンソール)](#how-to-view-pull-request-console)
+ [プルリクエストを表示する (AWS CLI)](#how-to-view-pull-request-cli)

## プルリクエストを表示する (コンソール)
<a name="how-to-view-pull-request-console"></a>

 AWS CodeCommit コンソールを使用して、CodeCommit リポジトリのプルリクエストのリストを表示できます。フィルターを変更することで、特定のプルリクエストのセットのみをリスト表示するよう変更できます。たとえば、作成したプルリクエストでステータスが [**Open**] のものを一覧表示したり、別のフィルターを選択して、作成したプルリクエストでステータスが [**Closed**] のものを表示したりできます。

1. [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) で CodeCommit コンソールを開きます。

1. [**Repositories (リポジトリー)**] で、プルリクエストを表示するリポジトリーの名前を選択します。

1. ナビゲーションペインで、[**Pull Requests (プルリクエスト)**] を選択します。

1. デフォルトでは、すべてのオープンプルリクエストが一覧表示されます。  
![\[AWS CodeCommit コンソールに表示されるプルリクエスト。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-pull-request-view-list.png)

1. 表示フィルターを変更するには、使用可能なフィルターのリストから選択します。
   + [**Open pull requests**] (デフォルト): ステータスが [**Open**] のすべてのプルリクエストが表示されます。
   + [**All pull requests**]: すべてのプルリクエストが表示されます。
   + [**Closed pull requests**]: ステータスが [**Closed**] のすべてのプルリクエストが表示されます。
   + [**My pull requests (自分用のプルリクエスト)**]: 作成したプルリクエストがステータスに関係なくすべて表示されます。自分がコメントした、または参加した評価は表示されません。
   + [**My open pull requests (自分用の開いているプルリクエスト)**]: 作成したプルリクエストでステータスが [**Open**] のものがすべて表示されます。
   + [**My closed pull requests (自分用の閉じているプルリクエスト)**]: 作成したプルリクエストでステータスが [**Closed**] のものがすべて表示されます。

1. 表示されたリストに確認したいプルリクエストを見つけたら、それを選択します。

## プルリクエストを表示する (AWS CLI)
<a name="how-to-view-pull-request-cli"></a>

CodeCommit で AWS CLI コマンドを使用するには、 をインストールします AWS CLI。詳細については、「[コマンドラインリファレンス](cmd-ref.md)」を参照してください。

を使用して CodeCommit リポジトリでプルリクエスト AWS CLI を表示するには、次の手順に従います。

1. リポジトリーのプルリクエストを一覧表示するには、**list-pull-requests** コマンドを実行し、以下を指定します。
   + プルリクエストを表示する CodeCommit リポジトリの名前 (**--repository-name** オプション)。
   + (オプション) プルリクエストのステータス (**--pull-request-status** オプションで指定)。
   + (オプション) プルリクエストを作成した IAM ユーザーの Amazon リソースネーム (ARN) (**--author-arn** オプション)。
   + (オプション) 結果のバッチを返すために使用できる列挙トークン (**--next-token** オプションで指定)。
   + (オプション) リクエストごとに返される結果の上限数 (**--max-results** オプションで指定)。

   例えば、`MyDemoRepo` という名前の CodeCommit リポジトリにあり、ARN が *arn:aws:iam::111111111111:user/Li\$1Juan* の IAM ユーザーが作成したプルリクエストでステータスが *CLOSED* のものをリスト表示するには、以下を実行します。

   ```
   aws codecommit list-pull-requests --author-arn arn:aws:iam::111111111111:user/Li_Juan --pull-request-status CLOSED --repository-name MyDemoRepo 
   ```

   このコマンドが正常に実行されると、次のような出力が生成されます。

   ```
   {
      "nextToken": "",
      "pullRequestIds": ["2","12","16","22","23","35","30","39","47"]
   }
   ```

   プルリクエスト ID は、新しいアクティビティの順序で表示されます。

1. プルリクエストの詳細を表示するには、**get-pull-request** コマンドを実行します。この場合、**--pull-request-id** オプションでプルリクエストの ID を指定します。たとえば、ID *27* のプルリクエストの詳細を確認するには、以下を実行します。

   ```
   aws codecommit get-pull-request --pull-request-id 27
   ```

   このコマンドが正常に実行されると、次のような出力が生成されます。

   ```
   {
       "pullRequest": {
           "approvalRules": [
               {
                   "approvalRuleContent": "{\"Version\": \"2018-11-08\",\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}",
                   "approvalRuleId": "dd8b17fe-EXAMPLE",
                   "approvalRuleName": "2-approver-rule-for-main",
                   "creationDate": 1571356106.936,
                   "lastModifiedDate": 571356106.936,
                   "lastModifiedUser": "arn:aws:iam::123456789012:user/Mary_Major",
                   "ruleContentSha256": "4711b576EXAMPLE"
               }
           ],
           "lastActivityDate": 1562619583.565,
           "pullRequestTargets": [
               {
                   "sourceCommit": "ca45e279EXAMPLE",
                   "sourceReference": "refs/heads/bugfix-1234",
                   "mergeBase": "a99f5ddbEXAMPLE",
                   "destinationReference": "refs/heads/main",
                   "mergeMetadata": {
                       "isMerged": false
                   },
                   "destinationCommit": "2abfc6beEXAMPLE",
                   "repositoryName": "MyDemoRepo"
               }
           ],
           "revisionId": "e47def21EXAMPLE",
           "title": "Quick fix for bug 1234",
           "authorArn": "arn:aws:iam::123456789012:user/Nikhil_Jayashankar",
           "clientRequestToken": "d8d7612e-EXAMPLE",
           "creationDate": 1562619583.565,
           "pullRequestId": "27",
           "pullRequestStatus": "OPEN"
       }
   }
   ```

1. <a name="get-pull-request-approval-state"></a>プルリクエストの承認を表示するには、次を指定して、**get-pull-request-approval-state** コマンドを実行します。
   + プルリクエストの ID （**--pull-request-id** オプションを指定）。
   + プルリクエストのリビジョン ID （**--revision-id option)** を使用。プルリクエストの現在のリビジョン ID を取得するには、[get-pull-request](#get-pull-request) コマンドを使用します。

   たとえば、ID が *8*、リビジョン ID が *9f29d167EXAMPLE* のプルリクエストの承認を表示するには、次のようにします。

   ```
   aws codecommit get-pull-request-approval-state --pull-request-id 8 --revision-id 9f29d167EXAMPLE
   ```

   このコマンドが正常に実行されると、次のような出力が生成されます。

   ```
   {
       "approvals": [
           {
               "userArn": "arn:aws:iam::123456789012:user/Mary_Major",
               "approvalState": "APPROVE"
           }
       ]
   }
   ```

1. プルリクエストのイベントを表示するには、**describe-pull-request-events** コマンドを実行します。この場合、**--pull-request-id** オプションでプルリクエストの ID を指定します。たとえば、ID *8* のプルリクエストのイベントを確認するには、以下を実行します。

   ```
   aws codecommit describe-pull-request-events --pull-request-id 8
   ```

   このコマンドが正常に実行されると、次のような出力が生成されます。

   ```
   {
       "pullRequestEvents": [
           {
               "pullRequestId": "8",
               "pullRequestEventType": "PULL_REQUEST_CREATED",
               "eventDate": 1510341779.53,
               "actor": "arn:aws:iam::111111111111:user/Zhang_Wei"
           },
           {
               "pullRequestStatusChangedEventMetadata": {
                   "pullRequestStatus": "CLOSED"
               },
               "pullRequestId": "8",
               "pullRequestEventType": "PULL_REQUEST_STATUS_CHANGED",
               "eventDate": 1510341930.72,
               "actor": "arn:aws:iam::111111111111:user/Jane_Doe"
           }
       ]
   }
   ```

1. プルリクエストにマージの競合があるかどうかを確認するには、**get-merge-conflicts** コマンドを実行します。この場合、以下を指定します。
   + CodeCommit リポジトリの名前 (**--repository-name** オプション)。
   + マージの評価で使用する変更の送信元のブランチ、タグ、HEAD、他の完全修飾参照 (**--source-commit-specifier** オプションで指定)。
   + マージの評価で使用する変更の送信先のブランチ、タグ、HEAD、他の完全修飾参照 (**--destination-commit-specifier** オプションで指定)。
   + 使用するマージオプション (**--merge-option** オプションで指定) 

   例えば、*my-feature-branch* という名前のソースブランチの先端と、`MyDemoRepo` という名前のリポジトリ内の *main* という名前の送信先ブランチの間にマージの競合があるかどうかを確認します。

   ```
   aws codecommit get-merge-conflicts --repository-name MyDemoRepo --source-commit-specifier my-feature-branch --destination-commit-specifier main --merge-option FAST_FORWARD_MERGE
   ```

   成功すると、このコマンドは以下のような出力を返します。

   ```
   {
       "destinationCommitId": "fac04518EXAMPLE",
       "mergeable": false,
       "sourceCommitId": "16d097f03EXAMPLE"
   }
   ```

# プルリクエストのレビュー
<a name="how-to-review-pull-request"></a>

 AWS CodeCommit コンソールを使用して、プルリクエストに含まれる変更を確認できます。コメントは、リクエスト、ファイル、個別のコード行に追加できます。他のユーザーのコメントに返信することもできます。リポジトリが [configured with notifications](how-to-repository-email.md) と設定されている場合、ユーザーがコメントに返信するとき、またはプルリクエストにユーザーがコメントするときに E メールで通知が送信されます。

を使用してプルリクエストに AWS CLI コメントし、コメントに返信できます。変更を確認するには、CodeCommit コンソール、**git diff** コマンドまたは diff ツールを使用する必要があります。

**Topics**
+ [プルリクエストを確認する (コンソール)](#how-to-review-pull-request-console)
+ [プルリクエストを確認する (AWS CLI)](#how-to-review-pull-request-cli)

## プルリクエストを確認する (コンソール)
<a name="how-to-review-pull-request-console"></a>

CodeCommit コンソールを使用して、CodeCommit リポジトリ内のプルリクエストを確認できます。

1. [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) で CodeCommit コンソールを開きます。

1. **リポジトリ**で、リポジトリの名前を選択します。

1. ナビゲーションペインで、[**プルリクエスト**] を選択します。

1. デフォルトでは、すべてのオープンプルリクエストが一覧表示されます。確認したいオープンプルリクエストを選択します。  
![\[CodeCommit コンソールでオープンプルリクエストを表示します。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-pull-request-view-list.png)
**注記**  
クローズまたはマージされたプルリクエストにコメントすることはできますが、マージまたは再度開くことはできません。

1. プルリクエストで、[**Changes**] を選択します。

1. 次のいずれかを行ってください。
   + プルリクエスト全体に全般的なコメントを追加するには、[**Comments on changes (変更に関するコメント)**] や [**New comment (新規コメント)**] にコメントを入力して、[**Save (保存)**] を選択します。[マークダウン](https://docs.aws.amazon.com/general/latest/gr/aws-markdown.html)を使用するか、プレーンテキスト形式でコメントを入力します。  
![\[プルリクエストの変更に対する全般的なコメント。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-commenting-changecomment.png)
   + コミット内のファイルにコメントを追加するには、[**Changes**] でファイルの名前を見つけます。ファイル名の横に表示されるコメント用アイコン (![\[The comment bubble icon that that indicates that you can leave a comment on that line of code.\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-commentbubble.png)) を選択し、コメントを入力して [**保存**] を選択します。  
![\[プルリクエスト内のファイルに対するコメントの追加。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-commenting-addfilecomment.png)
   + プルリクエスト内の変更された行にコメントを追加するには、[**Changes**] でコメントする行に移動します。その行の横に表示されるコメント用アイコン (![\[The comment bubble icon that that indicates that you can leave a comment on that line of code.\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-commentbubble.png)) を選択し、コメントを入力して [**保存**] を選択します。  
![\[プルリクエスト内の行に対するコメントの追加。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-pull-request-comment.png)

1. コミットのコメントに返信するには、[**Changes**] または [**Activity**] で、[**Reply**] を選択します。テキストと絵文字を使用して返信できます。  
![\[コメントへの返信や絵文字リアクションの追加。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-commenting-commenttab.png)

   特定の絵文字リアクションを使用して応答したユーザーの名前を、その絵文字リアクションを選択して表示できます。すべての絵文字リアクションと、特定の絵文字を使用して応答したユーザーに関する情報を表示するには、[**View all reactions (すべてのリアクションを表示)**」を選択します。コメントに絵文字で応答した場合、その応答は絵文字リアクションボタンのアイコンに表示されます。
**注記**  
コンソールに表示されるリアクション数は、ページが読み込まれた時点で正確です。絵文字のリアクション数に関する最新情報を表示するには、ページを更新するか、[**View all reactions (すべてのリアクションを表示)**] を選択します。  
![\[絵文字リアクションを使用してコメントに応答したユーザーに関する情報の表示。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-comment-view-reaction.png)

1. (オプション) Amazon CodeGuru Reviewer によって作成された推奨事項に返信し、推奨事項の品質に関するフィードバックを提供する場合は、[**Reply**] (返信) を選択します。リアクションボタンを使用して、推奨事項を承認するかどうかに関する一般的な情報を提供します。コメントフィールドを使用して、リアクションの詳細を入力します。
**注記**  
Amazon CodeGuru Reviewer は、プログラム分析と機械学習を使用して一般的な問題を検出し、Java または Python コードにおける修正点を提案する自動化されたコードレビューサービスです。  
Amazon CodeGuru Reviewer コメントが表示されるのは、リポジトリを Amazon CodeGuru Reviewer に関連付けている場合、分析が完了している場合、およびプルリクエストのコードが Java または Python コードである場合のみです。詳細については、「[AWS CodeCommit リポジトリと Amazon CodeGuru Reviewer の関連付けまたは関連付け解除](how-to-amazon-codeguru-reviewer.md)」を参照してください。
Amazon CodeGuru Reviewer コメントが [**Changes**] (変更) タブに表示されるのは、最新リビジョンのプルリクエストに対してコメントを作成した場合のみです。[**アクティビティ**] タブには、コメントが常に表示されます。
Amazon CodeGuru Reviewer の推奨事項に対する応答には使用可能な絵文字リアクションのいずれでも使用できますが、推奨事項の有用性を評価する場合は、親指を上げた手と親指を下げた手の絵文字アクションのみを使用します。  
![\[Amazon CodeGuru Reviewer によって、推奨事項が作成されました。レビュージョブが進行中です。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-pull-request-reply-bot.png)

1. プルリクエストで行われた変更を承認するには、[**Approve (承認)**] を選択します。
**注記**  
自分で作成したプルリクエストを自分で承認することはできません。

   承認、プルリクエストの承認ルール、および承認ルールテンプレートによって作成された承認ルールを [**Approvals (承認)**] で表示できます。プルリクエストを承認しない場合は、[**Revoke approval (承認の取り消し)**] を選択できます。
**注記**  
承認または取り消すことができるのは、オープンプルリクエストの承認のみです。ステータスが「マージ済」または「クローズ」のプルリクエストでは、承認を承認または取り消すことはできません。  
![\[プルリクエストの承認と承認ルール。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-approval-rule-met.png)

## プルリクエストを確認する (AWS CLI)
<a name="how-to-review-pull-request-cli"></a>

CodeCommit で AWS CLI コマンドを使用するには、 をインストールします AWS CLI。詳細については、「[コマンドラインリファレンス](cmd-ref.md)」を参照してください。

プルリクエストは、次の AWS CLI コマンドを使用して確認できます。
+ [**post-comment-for-pull-request**](#post-comment-reply) (プルリクエストにコメントを追加する)
+ [**get-comments-for-pull-request**](#get-comments-for-pull-request) (プルリクエストに残されたコメントを表示する)
+ [**update-pull-request-approval-state**](#update-pull-request-approval-state) (プルリクエストを承認するか承認を取り消す)
+ [**post-comment-reply**](#post-comment-reply) (プルリクエスト内のコメントに返信する)

次のコマンドを使用して、プルリクエストでコメントに絵文字を付けることもできます。
+ 絵文字を使用してコメントに返信するには、[**put-comment-reaction**](how-to-commit-comment.md#how-to-commit-comment-cli-commit-reply-emoji) を実行します。
+ コメントへの絵文字リアクションを表示するには、[**get-comment-reactions**](how-to-commit-comment.md#how-to-commit-comment-cli-commit-emoji-view) を実行します。

**を使用して CodeCommit リポジトリのプルリクエスト AWS CLI を確認するには**

1. リポジトリのプルリクエストにコメントを追加するには、**post-comment-for-pull-request** コマンドを実行し、以下を指定します。
   + プルリクエストの ID (**--pull-request-id** オプションを指定)。
   + プルリクエストが含まれているリポジトリの名前 (**--repository-name** オプションで指定)。
   + プルリクエストのマージ先である送信先ブランチのコミットの完全なコミット ID (**--before-commit-id** オプションで指定)。
   + コメントの投稿時にプルリクエストでブランチの現在の先端となっている送信元ブランチのコミットの完全なコミット ID (**--after-commit-id** オプションで指定)。
   + 冪等性の一意、クライアントで生成されたトークン (**--client-request-token** オプションを指定)。
   + コメントのコンテンツ (**--content** オプションを指定)。
   + コメントの配置場所に関する場所情報のリストには、以下を含みます。
     + 拡張子やサブディレクトリなど、比較されているファイルの名前 (ある場合) (**filePath** 属性を指定)。
     + 比較ファイル内の変更の行番号 (**filePosition** 属性を指定)。
     + 送信元ブランチと送信先ブランチの比較で、変更のコメントが「前」か「後」か (**relativeFileVersion** 属性を指定)。

   たとえば、このコマンドを使用して、*「これらは、どこでも使用されていないようです。削除できますか。」* というコメントを、リポジトリ名が *MyDemoRepo* で、プルリクエスト ID が *47*、ファイルが* ahs\$1count.py *の変更に追加する場合。

   ```
   aws codecommit post-comment-for-pull-request --pull-request-id "47" --repository-name MyDemoRepo --before-commit-id 317f8570EXAMPLE --after-commit-id 5d036259EXAMPLE --client-request-token 123Example --content "These don't appear to be used anywhere. Can we remove them?" --location filePath=ahs_count.py,filePosition=367,relativeFileVersion=AFTER   
   ```

   このコマンドが正常に実行されると、次のような出力が生成されます。

   ```
   { 
            "afterBlobId": "1f330709EXAMPLE",
            "afterCommitId": "5d036259EXAMPLE",
            "beforeBlobId": "80906a4cEXAMPLE",
            "beforeCommitId": "317f8570EXAMPLE",
            "comment": {
                  "authorArn": "arn:aws:iam::111111111111:user/Saanvi_Sarkar",
                  "clientRequestToken": "123Example",
                  "commentId": "abcd1234EXAMPLEb5678efgh",
                  "content": "These don't appear to be used anywhere. Can we remove them?",
                  "creationDate": 1508369622.123,
                  "deleted": false,
                  "lastModifiedDate": 1508369622.123,
                  "callerReactions": [],
                  "reactionCounts": []
               }
                "location": { 
                  "filePath": "ahs_count.py",
                  "filePosition": 367,
                  "relativeFileVersion": "AFTER"
                },
            "repositoryName": "MyDemoRepo",
            "pullRequestId": "47"
    }
   ```

1. プルリクエストのコメントを表示するには、**get-comments-for-pull-request** コマンドを実行し、以下を指定します。
   + CodeCommit リポジトリの名前 (`--repository-name` オプション)。
   + プルリクエストのシステム生成の ID （`--pull-request-id` オプション付き）。
   + (オプション) 結果の次のバッチを返す列挙トークン (`--next-token` オプションを使用)。
   + (オプション) 返される結果の数を制限する負でない整数 (`--max-results` オプションを使用)。

   たとえば、ID が 42 のプルリクエストのコメントを表示するには、このコマンドを使用します。

   ```
   aws codecommit get-comments-for-pull-request --pull-request-id 42
   ```

   このコマンドが正常に実行されると、次のような出力が生成されます。

   ```
   {
      "commentsForPullRequestData": [ 
         { 
            "afterBlobId": "1f330709EXAMPLE",
            "afterCommitId": "5d036259EXAMPLE",
            "beforeBlobId": "80906a4cEXAMPLE",
            "beforeCommitId": "317f8570EXAMPLE",
            "comments": [ 
               { 
                  "authorArn": "arn:aws:iam::111111111111:user/Saanvi_Sarkar",
                  "clientRequestToken": "",
                  "commentId": "abcd1234EXAMPLEb5678efgh",
                  "content": "These don't appear to be used anywhere. Can we remove them?",
                  "creationDate": 1508369622.123,
                  "deleted": false,
                  "lastModifiedDate": 1508369622.123,
                  "callerReactions": [],
                  "reactionCounts": 
                   {
                     "THUMBSUP" : 6,
                     "CONFUSED" : 1
                   }
               },
               {
                  "authorArn": "arn:aws:iam::111111111111:user/Li_Juan",
                  "clientRequestToken": "",
                  "commentId": "442b498bEXAMPLE5756813",
                  "content": "Good catch. I'll remove them.",
                  "creationDate": 1508369829.104,
                  "deleted": false,
                  "lastModifiedDate": 150836912.273,
                  "callerReactions": ["THUMBSUP"]
                  "reactionCounts": 
                   {
                     "THUMBSUP" : 14
                   }
                }
            ],
            "location": { 
               "filePath": "ahs_count.py",
               "filePosition": 367,
               "relativeFileVersion": "AFTER"
            },
            "repositoryName": "MyDemoRepo",
            "pullRequestId": "42"
         }
      ],
      "nextToken": "exampleToken"
   }
   ```

1. <a name="update-pull-request-approval-state"></a>プルリクエストを承認するか取り消すには、次を指定して、**update-pull-request-approval-state** コマンドを実行します。
   + プルリクエストの ID （**--pull-request-id** オプションを指定）。
   + プルリクエストのリビジョン ID （**--revision-id option)** を使用。プルリクエストの現在のリビジョン ID を取得するには、[get-pull-request](how-to-view-pull-request.md#get-pull-request) コマンドを使用します。
   + 適用する承認状態（**--approval-state** を使用）。有効な承認状態には、`APPROVE` および `REVOKE` があります。

   たとえば、ID が *27* で、リビジョン ID が *9f29d167EXAMPLE* のプルリクエストを承認するには、このコマンドを使用します。

   ```
   aws codecommit update-pull-request-approval-state --pull-request-id 27 --revision-id 9f29d167EXAMPLE --approval-state "APPROVE"
   ```

   成功すると、このコマンドは何も返しません。

1. プルリクエストのコメントに返答するには、**post-comment-reply** コマンドを実行して、次のように指定します。
   + 返信したいコメントのシステム生成 ID (**--in-reply-to** オプションを指定)。
   + 冪等性の一意、クライアントで生成されたトークン (**--client-request-token** オプションを指定)。
   + 返答のコンテンツ (**--content** オプションを指定)。

    たとえば、このコマンドを使用して、*「よく見つけましたね。削除します。」* という返答を、システムによって生成された ID が* abcd1234EXAMPLEb5678efgh *のコメントに追加する場合。

   ```
   aws codecommit post-comment-reply --in-reply-to abcd1234EXAMPLEb5678efgh --content "Good catch. I'll remove them." --client-request-token 123Example
   ```

   このコマンドが正常に実行されると、次のような出力が生成されます。

   ```
   { 
       "comment": {
           "authorArn": "arn:aws:iam::111111111111:user/Li_Juan",
           "clientRequestToken": "123Example",
           "commentId": "442b498bEXAMPLE5756813",
           "content": "Good catch. I'll remove them.",
           "creationDate": 1508369829.136,
           "deleted": false,
           "lastModifiedDate": 150836912.221,
           "callerReactions": [],
           "reactionCounts": []
       }
    }
   ```

# プルリクエストの更新
<a name="how-to-update-pull-request"></a>

オープンプルリクエストのソースブランチにコミットをプッシュすることによって、追加のコード変更でプルリクエストを更新することができます。詳細については、「[でコミットを作成する AWS CodeCommit](how-to-create-commit.md)」を参照してください。

AWS CodeCommit コンソールまたは AWS CLI を使用して、プルリクエストのタイトルまたは説明を更新できます。プルリクエストのタイトルまたは説明の更新は、以下の状況の場合に実行するとよいでしょう。
+ 他のユーザーが説明を理解できないか、元のタイトルが誤解を招く可能性がある。
+ オープンプルリクエストの送信元ブランチに加えた変更が反映されたタイトルまたは説明にしたい。

## プルリクエストを更新する (コンソール)
<a name="how-to-update-pull-request-console"></a>

CodeCommit コンソールを使用して、CodeCommit リポジトリ内のプルリクエストのタイトルと説明を更新できます。プルリクエストのコードを更新するには、オープンプルリクエストのソースブランチにコミットをプッシュします。

1. [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) で CodeCommit コンソールを開きます。

1. [**リポジトリ**] で、プルリクエストを更新するリポジトリの名前を選択します。

1. ナビゲーションペインで、[**プルリクエスト**] を選択します。

1. デフォルトでは、すべてのオープンプルリクエストが一覧表示されます。更新したいオープンプルリクエストを選択します。

1. プルリクエストで、[**詳細**]、[**詳細の編集**] の順に選択し、タイトルまたは説明を編集します。
**注記**  
閉じているプルリクエストやマージされたプルリクエストのタイトルまたは説明を更新することはできません。

## プルリクエストを更新する (AWS CLI)
<a name="how-to-update-pull-request-cli"></a>

CodeCommit で AWS CLI コマンドを使用するには、AWS CLI をインストールします。詳細については、「[コマンドラインリファレンス](cmd-ref.md)」を参照してください。

また、次のコマンドにも興味があるかもしれません。
+ **[update-pull-request-approval-state](how-to-review-pull-request.md#update-pull-request-approval-state)** で、プルリクエストを承認するか承認を取り消します。
+ [**create-pull-request-approval-rule**](how-to-create-pull-request-approval-rule.md#how-to-create-pull-request-approval-rule-cli) で、プルリクエストの承認ルールを作成します。
+ [**delete-pull-request-approval-rule**](how-to-edit-delete-pull-request-approval-rule.md#delete-pull-request-approval-rule) で、プルリクエストの承認ルールを削除します。
+ [を使用してコミットを作成する AWS CLI](how-to-create-commit.md#how-to-create-commit-cli) または [Git クライアントを使用してコミットを作成する](how-to-create-commit.md#how-to-create-commit-git) で、追加のコード変更を作成し、オープンプルリクエストのソースブランチにプッシュします。

**AWS CLI を使用して CodeCommit リポジトリでプルリクエストを更新するには**

1.  リポジトリのプルリクエストのタイトルを更新するには、**update-pull-request-title** コマンドを実行し、以下を指定します。
   + プルリクエストの ID (**--pull-request-id** オプションを指定)。
   + プルリクエストのタイトル (**--title** オプションで指定)。

   たとえば、ID *47* のプルリクエストのタイトルを更新するには、以下を実行します。

   ```
   aws codecommit update-pull-request-title --pull-request-id 47 --title "Consolidation of global variables - updated review"  
   ```

1. プルリクエストの説明を更新するには、**update-pull-request-description** コマンドを実行し、以下を指定します。
   + プルリクエストの ID (**--pull-request-id** オプションを指定)。
   + 説明 (**--description** オプションで指定)。

    たとえば、ID *47* のプルリクエストの説明を更新するには、以下を実行します。

   ```
   aws codecommit update-pull-request-description --pull-request-id 47 --description "Updated the pull request to remove unused global variable."
   ```

# プルリクエストの承認ルールを編集または削除する
<a name="how-to-edit-delete-pull-request-approval-rule"></a>

プルリクエストに承認ルールがある場合、その条件が満たされるまでプルリクエストをマージできません。プルリクエストの承認ルールを変更して、その条件を容易に満たしたり、レビューの厳しさを高めることができます。プルリクエストを承認する必要があるユーザーの数を変更できます。また、ルールのユーザーの承認プールのメンバーシップを追加、削除、または変更することもできます。最後に、プルリクエストに承認ルールを使用しなくなった場合は、それを削除できます。

**注記**  
プルリクエストの承認ルールを上書きすることもできます。詳細については、「[プルリクエストの承認ルールの上書き](how-to-override-approval-rules.md)」を参照してください。

 AWS CodeCommit コンソールまたは を使用して AWS CLI 、リポジトリの承認ルールを編集および削除できます。

**Topics**
+ [プルリクエストの承認ルールを編集または削をする (コンソール)](#how-to-edit-delete-pull-request-approval-rule-console)
+ [プルリクエストの承認ルールを編集または削除する (AWS CLI)](#how-to-edit-delete-pull-request-approval-rule-cli)

## プルリクエストの承認ルールを編集または削をする (コンソール)
<a name="how-to-edit-delete-pull-request-approval-rule-console"></a>

CodeCommit コンソールを使用して、CodeCommit リポジトリ内のプルリクエストの承認ルールを編集または削除できます。

1. [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) で CodeCommit コンソールを開きます。

1. [**リポジトリ**] で、プルリクエストの承認ルールを編集または削除するリポジトリの名前を選択します。

1. ナビゲーションペインで、[**Pull Requests (プルリクエスト)**] を選択します。

1. 承認ルールを編集または削除するプルリクエストを選択します。オープンプルリクエストの承認ルールのみを編集および削除できます。  
![\[CodeCommit コンソールのリポジトリのプルリクエストのリスト。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-pull-request-view.png)

1. プルリクエストで [**Approvals (承認)**] を選択し、編集または削除するルールをリストから選択します。次のいずれかを行ってください。
   + ルールを編集するには、[**Edit (編集)**] を選択します。
   + ルールを削除する場合は、[**Delete (削除)**] を選択し、指示に従ってルールの削除を確認します。

1. [**Edit approval rule (承認ルールの編集)**] で、ルールに対して必要な変更を行い、[**Submit (送信)**] を選択します。  
![\[承認ルールの編集\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-pull-request-edit-rule.png)

1. 承認ルールの設定が完了したら、[**Submit (送信)**] を選択します。

 

## プルリクエストの承認ルールを編集または削除する (AWS CLI)
<a name="how-to-edit-delete-pull-request-approval-rule-cli"></a>

CodeCommit で AWS CLI コマンドを使用するには、 をインストールします AWS CLI。詳細については、「[コマンドラインリファレンス](cmd-ref.md)」を参照してください。

を使用して AWS CLI 、承認ルールの内容を編集し、承認ルールを削除できます。

**注記**  
また、次のコマンドにも興味があるかもしれません。  
**[update-pull-request-approval-state](how-to-review-pull-request.md#update-pull-request-approval-state)** で、プルリクエストを承認するか承認を取り消します。
[**get-pull-request-approval-states**](how-to-view-pull-request.md#get-pull-request-approval-state) で、プルリクエストの承認を表示します。
[**evaluate-pull-request-approval-rules**](how-to-merge-pull-request.md#evaluate-pull-request-approval-rules) で、プルリクエストの承認ルールが条件を満たしているかどうかを判断します。

**を使用して CodeCommit リポジトリのプルリクエストの承認ルール AWS CLI を編集または削除するには**<a name="update-pull-request-approval-rule-content"></a>

1. 承認ルールを編集するには、**update-pull-request-approval-rule-content** コマンドを実行して、次を指定します。
   + プルリクエストの ID (**--id** オプションを指定)。
   + 承認ルールの名前（**--approval-rule-name** オプション付き）。
   + 承認ルールの内容（**--approval-rule-content** オプション付き）。

   次の使用例は、ID が *27* のプルリクエストに対して *2 人の承認者を必要とする*という名前の承認ルールを更新します。このルールでは、*123456789012* アマゾン ウェブ サービスアカウントのすべての IAM ユーザーを含む承認プールから 1 人のユーザー承認が必要です。

   ```
   aws codecommit update-pull-request-approval-rule-content --pull-request-id 27 --approval-rule-name "Require two approved approvers" --approval-rule-content "{Version: 2018-11-08, Statements: [{Type: \"Approvers\", NumberOfApprovalsNeeded: 1, ApprovalPoolMembers:[\"CodeCommitApprovers:123456789012:user/*\"]}]}}"
   ```

1. <a name="delete-pull-request-approval-rule"></a>承認ルールを削除するには、次を指定して、**delete-pull-request-approval-rule** コマンドを実行します。
   + プルリクエストの ID (**--id** オプションを指定)。
   + 承認ルールの名前（**--approval-rule-name** オプション付き）。

   たとえば、ID が *15* のプルリクエストの *私の承認ルール*という名前の承認ルールを削除するには、次のようにします。

   ```
   aws codecommit delete-pull-request-approval-rule --pull-request-id 15 --approval-rule-name "My Approval Rule"
   ```

# プルリクエストの承認ルールの上書き
<a name="how-to-override-approval-rules"></a>

通常の開発過程では、プルリクエストをマージする前に、ユーザーが承認ルールの条件を満たすようにします。ただし、プルリクエストのマージを迅速化する必要がある場合があります。たとえば、バグ修正を本番稼働環境に配置したいが、承認プールの誰もプルリクエストを承認できないとします。このような場合は、プルリクエストの承認ルールを上書きすることを選択できます。プルリクエスト用に特別に作成され、承認ルールテンプレートから生成されたものを含む、プルリクエストのすべての承認ルールを上書きできます。特定の承認ルールを選択的に上書きすることはできません。すべてのルールだけです。ルールを上書きして承認ルールの要件を確保したら、プルリクエストを送信先ブランチにマージできます。

プルリクエストの承認ルールを上書きすると、ルールを上書きしたユーザーに関する情報が、プルリクエストのアクティビティに記録されます。このようにして、プルリクエストの履歴に戻り、誰がルールを上書きしたかを確認できます。プルリクエストがまだ開いている場合は、上書きを取り消すこともできます。プルリクエストがマージされると、上書きを取り消すことができなくなります。

**Topics**
+ [承認ルールを上書きする (コンソール)](#how-to-override-approval-rules-console)
+ [承認ルールを上書きする (AWS CLI)](#how-to-override-approval-rules-cli)

## 承認ルールを上書きする (コンソール)
<a name="how-to-override-approval-rules-console"></a>

プルリクエストの確認の一環として、コンソールでプルリクエストの承認ルールの要件を上書きできます。気が変わったら、上書きを取り消すことができ、承認ルールの要件が再適用されます。プルリクエストが開いている場合にのみ、承認ルールを上書きするか、上書きを取り消すことができます。マージまたはクローズしている場合は、上書き状態を変更できません。

1. [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) で CodeCommit コンソールを開きます。

1. **リポジトリ**で、リポジトリの名前を選択します。

1. ナビゲーションペインで、[**プルリクエスト**] を選択します。承認ルールの要件を上書きするプルリクエストを選択するか、上書きを取り消します。

1. [**Approvals (承認)**] タブで、[**Override approval rules (承認ルールの上書き)**] を選択します。要件は確保され、ボタンのテキストは [**Revoke override (上書きを取り消し)**] に変わります。承認ルールの要件を再適用するには、[**Revoke override (上書きの取り消し)**] を選択します。

## 承認ルールを上書きする (AWS CLI)
<a name="how-to-override-approval-rules-cli"></a>

AWS CLI を使用して、承認ルールの要件を上書きできます。プルリクエストの上書きステータスを表示する場合にも使用できます。<a name="override-approval-rules"></a>

## プルリクエストの承認ルール要件を上書きするには
<a name="override-approval-rules"></a>

1. ターミナルまたはコマンドラインで、次を指定して、**override-pull-request-approval-rules** コマンドを実行します。
   + プルリクエストのシステム生成 ID。
   + プルリクエストの最新リビジョン ID。この情報を表示するには、**get-pull-request** を使用します。
   + 上書きするステータス、`OVERRIDE` または `REVOKE`。`REVOKE` ステータスによって `OVERRIDE` ステータスが削除されますが、保存されません。

   たとえば、ID が、**34** で、リビジョン ID が **927df8d8EXAMPLE** であるプルリクエストの承認ルールを上書きするには、次のようにします。

   ```
   aws codecommit override-pull-request-approval-rules --pull-request-id 34 --revision-id 927df8d8dEXAMPLE --override-status OVERRIDE
   ```

1. 成功した場合、このコマンドは何も返しません。

1. ID が、**34** で、リビジョン ID が **927df8d8EXAMPLE** であるプルリクエストの上書きを取り消すには、次のようにします。

   ```
   aws codecommit override-pull-request-approval-rules --pull-request-id 34 --revision-id 927df8d8dEXAMPLE --override-status REVOKE
   ```<a name="get-override-status"></a>

## プルリクエストの上書きステータスに関する情報を取得するには
<a name="get-override-status"></a>

1. ターミナルまたはコマンドラインで、次を指定して、**get-pull-request-override-state** コマンドを実行します。
   + プルリクエストのシステム生成 ID。
   + プルリクエストの最新リビジョン ID。この情報を表示するには、**get-pull-request** を使用します。

   たとえば、ID が、**34** で、リビジョン ID が **927df8d8EXAMPLE** であるプルリクエストの上書き状態を表示するには、次のようにします。

   ```
   aws codecommit get-pull-request-override-state --pull-request-id 34 --revision-id 927df8d8dEXAMPLE
   ```

1. このコマンドが正常に実行されると、次のような出力が生成されます。

   ```
   {
       "overridden": true,
       "overrider": "arn:aws:iam::123456789012:user/Mary_Major"
   }
   ```

# AWS CodeCommit リポジトリでプルリクエストをマージする
<a name="how-to-merge-pull-request"></a>

コードがレビューされ、プルリクエストのすべての承認ルール（存在する場合）が満たされたら、次のいずれかの方法でプルリクエストをマージできます。
+ <a name="is-mergable"></a>コンソールを使用して、利用できるいずれかのマージ戦略を使用して送信元ブランチを送信先ブランチにマージすることができます。また、これはプルリクエストを終了できます。また、コンソールでマージの競合を解決することもできます。プルリクエストがマージ可能かどうか、または競合を解決する必要があるかどうかを示すメッセージがコンソールに表示されます。すべての競合が解決され、[**Merge (マージ)**] を選択すると、選択したマージ戦略を使用してマージが実行されます。早送りは、Git のデフォルトのオプションであるデフォルトのマージ戦略です。送信元ブランチと送信先ブランチ内のコードの状態によってはこの戦略を利用できないことがありますが、スカッシュや 3 方向などの他のオプションを使用できる可能性があります。
+ AWS CLI を使用して、早送り、スカッシュ、または 3 方向のマージ戦略を使用してプルリクエストをマージおよびクローズできます。
+ <a name="why-git-merge"></a>ローカルコンピュータで、**git merge** コマンドを使用して、ソースブランチを送信先ブランチにマージしてから、マージしたコードを送信先ブランチにプッシュすることができます。このアプローチには、慎重に検討する必要がある欠点があります。プルリクエストの承認ルールの要件が満たされているかどうかにかかわらず、プルリクエストをマージし、これらのコントロールを回避します。送信先ブランチをマージしてプッシュすると、早送りマージ戦略を利用してプルリクエストをマージする場合に、プルリクエストを自動的にクローズします。この方法の利点の 1 つは、**git merge** コマンドで、CodeCommit コンソールで使用できないマージオプションまたは戦略を選択できることです。**git merge** とマージオプションの詳細については、「[git-merge](https://git-scm.com/docs/git-merge)」または Git ドキュメントを参照してください。

CodeCommit は、プルリクエストの送信元ブランチまたは送信先ブランチのいずれかが削除された場合、プルリクエストを自動的にクローズします。

**Topics**
+ [プルリクエストをマージする (コンソール)](#how-to-merge-pull-request-console)
+ [プルリクエストをマージする (AWS CLI)](#how-to-merge-pull-request-cli)

## プルリクエストをマージする (コンソール)
<a name="how-to-merge-pull-request-console"></a>

CodeCommit コンソールを使用して、CodeCommit リポジトリにプルリクエストをマージできます。プルリクエストの状態が [**Merged (マージ済み)**] に変更されると、これはオープンプルリクエストのリストに表示されなくなります。マージされたプルリクエストはクローズ済みに分類されます。これを [**Open (オープン)**] に戻すことはできませんが、ユーザーはこの変更に対して引き続きコメントでき、コメントに対して返信できます。プルリクエストがマージまたはクローズされると、そのプルリクエストを承認、承認取り消し、プルリクエストに適用された承認ルールを上書きすることはできません。

1. [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) で CodeCommit コンソールを開きます。

1. **リポジトリ**で、リポジトリの名前を選択します。

1. ナビゲーションペインで、[**プルリクエスト**] を選択します。

1. デフォルトでは、すべてのオープンプルリクエストが一覧表示されます。マージするオープンプルリクエストを選択します。

1. プルリクエストで、[**Approvals (承認)**] を選択します。承認者のリストを確認し、すべての承認ルール（存在する場合）が条件を満たしていることを確認します。1 つ以上の承認ルールのステータスが [**Rule not satisfied (ルールが満たされていません)**] の場合、プルリクエストをマージできません。プルリクエストを誰も承認していない場合は、マージするか、承認を待機するかを検討します。
**注記**  
プルリクエストの承認ルールが作成されている場合は、編集または削除してマージのブロックを解除できます。承認ルールテンプレートを使用して作成された承認ルールは、編集または削除できません。要件を上書きすることのみを選択できます。詳細については、「[プルリクエストの承認ルールの上書き](how-to-override-approval-rules.md)」を参照してください。  
![\[条件が満たされていない承認ルールと空の承認者リストを示すプルリクエスト。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-approval-rule-not-met.png)

1. [**Merge (マージ)**] を選択します。

1. プルリクエストで、使用可能なマージ方法のいずれかを選択します。適用できないマージ戦略は、グレー表示されます。利用可能なマージ戦略がない場合、CodeCommit コンソールで競合を手動で解決するか、または Git クライアントをローカルで使用して解決することができます。詳細については、「[AWS CodeCommit リポジトリ内のプルリクエストの競合を解決する](how-to-resolve-conflict-pull-request.md)」を参照してください。  
![\[CodeCommit コンソールでのマージで利用できるマージ戦略を示すプルリクエスト。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-merge-squash.png)
   + 早送りマージは、送信元ブランチの最新コミットに送信先のブランチへのリファレンスを転送します。これは、利用可能な場合の Git のデフォルトの動作です。マージコミットは作成されませんが、送信元ブランチからのすべてのコミット履歴は送信先ブランチで発生していたかのように保持されます。早送りマージは、マージコミットが作成されないため、送信先ブランチの履歴のコミットビジュアライザービューにブランチマージとして表示されません。送信元ブランチのヒントが送信先ブランチのヒントに早送りされます。
   + スカッシュマージによって送信元ブランチ内の変更を含む 1 つのコミットが作成され、この単一のスカッシュ済みコミットが送信先ブランチに適用されます。デフォルトでは、このスカッシュコミットへのコミットメッセージには送信元ブランチ内の変更におけるすべてのコミットメッセージが含まれています。ブランチの変更における個別のコミット履歴は一切保持されません。これによってリポジトリ履歴の簡素化に役立ち、また、送信先ブランチの履歴のコミットビューではマージのグラフ表示が保持されます。
   + 3 方向マージは送信先ブランチのマージにマージコミットを作成しますが、送信元ブランチで行われた個別のコミットも送信先ブランチの履歴の一部として保持します。これは、リポジトリへの変更の完全な履歴を保持することに役立ちます。

1. スカッシュあるいは 3 方向のマージ戦略を選択する場合、自動生成されるコミットメッセージを確認して、情報を変更する必要に応じてこれを編集します。コミット履歴に名前および E メールアドレスを追加します。

1. （オプション）必要に応じて、送信元ブランチをマージの一部として削除するオプションの選択を解除します。デフォルトでは、プルリクエストがマージされたときにソースブランチを削除します。

1. [**Merge pull request (プルリクエストのマージ)**] を選択してマージを完了します。

## プルリクエストをマージする (AWS CLI)
<a name="how-to-merge-pull-request-cli"></a>

CodeCommit で AWS CLI コマンドを使用するには、AWS CLI をインストールします。詳細については、「[コマンドラインリファレンス](cmd-ref.md)」を参照してください。

**AWS CLI を使用して CodeCommit リポジトリでプルリクエストをマージするには**

1. <a name="evaluate-pull-request-approval-rules"></a>プルリクエストのすべての承認ルールが満たされ、マージする準備ができているかどうかを評価するには、以下を指定して、**evaluate-pull-request-approval-rules** コマンドを実行します。
   + プルリクエストの ID （**--pull-request-id** オプションを指定）。
   + プルリクエストのリビジョン ID （**--revision-id option)** を使用。プルリクエストの現在のリビジョン ID を取得するには、**[get-pull-request](how-to-view-pull-request.md#get-pull-request)** コマンドを使用します。

   たとえば、ID が *27* で、リビジョン ID が *9f29d167EXAMPLE* を持つプルリクエストの承認ルールの状態を評価するには、次のようにします。

   ```
   aws codecommit evaluate-pull-request-approval-rules --pull-request-id 27 --revision-id 9f29d167EXAMPLE
   ```

   このコマンドが正常に実行されると、次のような出力が生成されます。

   ```
   {
       "evaluation": {
           "approved": false,
           "approvalRulesNotSatisfied": [
               "Require two approved approvers"
           ],
           "overridden": false,
           "approvalRulesSatisfied": []
       }
   }
   ```
**注記**  
この出力は、承認ルールの要件が満たされていないため、プルリクエストがマージ可能でないことを示します。このプルリクエストをマージするには、ルールの条件を満たすためにレビュー担当者に承認してもらいます。アクセス許可とルールの作成方法によっては、ルールを編集、上書き、または削除できる場合もあります。詳細については、「[プルリクエストのレビュー](how-to-review-pull-request.md)」、「[プルリクエストの承認ルールの上書き](how-to-override-approval-rules.md)」、および「[プルリクエストの承認ルールを編集または削除する](how-to-edit-delete-pull-request-approval-rule.md)」を参照してください。

1. 早送りマージ戦略を使用してプルリクエストをマージしてクローズするには、次を指定して **merge-pull-request-by-fast-forward** コマンドを実行します。
   + プルリクエストの ID (**--pull-request-id** オプションを指定)。
   + ソースブランチのチップの完全なコミット ID (**--source-commit-id** オプションを指定)。
   + レポジトリの名前 (**--repository-name** オプションを指定)。

    例えば、*MyDemoRepo* という名前のリポジトリで、ID が *47*、ソースコミット ID が *99132ab0EXAMPLE* のプルリクエストをマージしてクローズするには、以下の操作を行います。

   ```
   aws codecommit merge-pull-request-by-fast-forward --pull-request-id 47 --source-commit-id 99132ab0EXAMPLE --repository-name MyDemoRepo
   ```

   このコマンドが正常に実行されると、次のような出力が生成されます。

   ```
   {
       "pullRequest": {
           "approvalRules": [
               {
                   "approvalRuleContent": "{\"Version\": \"2018-11-08\",\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 1,\"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}",
                   "approvalRuleId": "dd8b17fe-EXAMPLE",
                   "approvalRuleName": "I want one approver for this pull request",
                   "creationDate": 1571356106.936,
                   "lastModifiedDate": 571356106.936,
                   "lastModifiedUser": "arn:aws:iam::123456789012:user/Mary_Major",
                   "ruleContentSha256": "4711b576EXAMPLE"
               }
           ],
           "authorArn": "arn:aws:iam::123456789012:user/Li_Juan",
           "clientRequestToken": "",
           "creationDate": 1508530823.142,
           "description": "Review the latest changes and updates to the global variables",
           "lastActivityDate": 1508887223.155,
           "pullRequestId": "47",
           "pullRequestStatus": "CLOSED",
           "pullRequestTargets": [
               {
                   "destinationCommit": "9f31c968EXAMPLE",
                   "destinationReference": "refs/heads/main",
                   "mergeMetadata": {
                       "isMerged": true,
                       "mergedBy": "arn:aws:iam::123456789012:user/Mary_Major"
                   },
                   "repositoryName": "MyDemoRepo",
                   "sourceCommit": "99132ab0EXAMPLE",
                   "sourceReference": "refs/heads/variables-branch"
               }
           ],
           "title": "Consolidation of global variables"
       }
   }
   ```

1. スカッシュマージ戦略を使用してプルリクエストをマージしてクローズするには、次を指定して **merge-pull-request-by-squash** コマンドを実行します。
   + プルリクエストの ID (**--pull-request-id** オプションを指定)。
   + ソースブランチのチップの完全なコミット ID (**--source-commit-id** オプションを指定)。
   + レポジトリの名前 (**--repository-name** オプションを指定)。
   + 使用する競合の詳細のレベル (**--conflict-detail-level** オプションを指定)。指定しない場合、デフォルトの **`FILE_LEVEL`** が使用されます。
   + 使用する競合の解決戦略 (**--conflict-resolution-strategy** オプションを指定)。指定しない場合、このデフォルトは `NONE` になり、競合を手動で解決する必要があります。
   + 含めるコミットメッセージ (**--commit-message** オプションを指定)。
   + コミットに使用する名前 (**--author-name** オプションを指定)。
   + コミットに使用する E メールアドレス (**--email** オプションを指定)。
   + 空のフォルダを保持するかどうか (**--keep-empty-folders** オプションを指定)。

   次の例では、*MyDemoRepo* という名前のリポジトリで、ID が *47*、ソースコミット ID が *99132ab0EXAMPLE* のプルリクエストをマージしてクローズします。これは、`LINE_LEVEL` の競合の詳細と `ACCEPT_SOURCE` の競合解決戦略を使用します

   ```
   aws codecommit merge-pull-request-by-squash --pull-request-id 47 --source-commit-id 99132ab0EXAMPLE --repository-name MyDemoRepo --conflict-detail-level LINE_LEVEL --conflict-resolution-strategy ACCEPT_SOURCE --author-name "Jorge Souza" --email "jorge_souza@example.com" --commit-message "Merging pull request 47 by squash and accepting source in merge conflicts"
   ```

   正常に実行されると、このコマンドは早送りによるマージと同じ種類の出力を行います。出力は次のようになります。

   ```
   {
       "pullRequest": {
           "approvalRules": [
               {
                   "approvalRuleContent": "{\"Version\": \"2018-11-08\",\"DestinationReferences\": [\"refs/heads/main\"],\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}",
                   "approvalRuleId": "dd8b17fe-EXAMPLE",
                   "approvalRuleName": "2-approver-rule-for-main",
                   "creationDate": 1571356106.936,
                   "lastModifiedDate": 571356106.936,
                   "lastModifiedUser": "arn:aws:iam::123456789012:user/Mary_Major",
                   "originApprovalRuleTemplate": {
                       "approvalRuleTemplateId": "dd8b17fe-EXAMPLE",
                       "approvalRuleTemplateName": "2-approver-rule-for-main"
                   },
                   "ruleContentSha256": "4711b576EXAMPLE"
               }
           ],
           "authorArn": "arn:aws:iam::123456789012:user/Li_Juan",
           "clientRequestToken": "",
           "creationDate": 1508530823.142,
           "description": "Review the latest changes and updates to the global variables",
           "lastActivityDate": 1508887223.155,
           "pullRequestId": "47",
           "pullRequestStatus": "CLOSED",
           "pullRequestTargets": [
               {
                   "destinationCommit": "9f31c968EXAMPLE",
                   "destinationReference": "refs/heads/main",
                   "mergeMetadata": {
                       "isMerged": true,
                       "mergedBy": "arn:aws:iam::123456789012:user/Mary_Major"
                   },
                   "repositoryName": "MyDemoRepo",
                   "sourceCommit": "99132ab0EXAMPLE",
                   "sourceReference": "refs/heads/variables-branch"
               }
           ],
           "title": "Consolidation of global variables"
       }
   }
   ```

1. 3 方向のマージ戦略を使用してプルリクエストをマージしてクローズするには、次を指定して **merge-pull-request-by-three-way** コマンドを実行します。
   + プルリクエストの ID (**--pull-request-id** オプションを指定)。
   + ソースブランチのチップの完全なコミット ID (**--source-commit-id** オプションを指定)。
   + レポジトリの名前 (**--repository-name** オプションを指定)。
   + 使用する競合の詳細のレベル (**--conflict-detail-level** オプションを指定)。指定しない場合、デフォルトの **`FILE_LEVEL`** が使用されます。
   + 使用する競合の解決戦略 (**--conflict-resolution-strategy** オプションを指定)。指定しない場合、このデフォルトは `NONE` になり、競合を手動で解決する必要があります。
   + 含めるコミットメッセージ (**--commit-message** オプションを指定)。
   + コミットに使用する名前 (**--author-name** オプションを指定)。
   + コミットに使用する E メールアドレス (**--email** オプションを指定)。
   + 空のフォルダを保持するかどうか (**--keep-empty-folders** オプションを指定)。

   次の例では、*MyDemoRepo* という名前のリポジトリで、ID が *47*、ソースコミット ID が *99132ab0EXAMPLE* のプルリクエストをマージしてクローズします。これは、競合の詳細と競合解決戦略のデフォルトのオプションを使用します。

   ```
   aws codecommit merge-pull-request-by-three-way --pull-request-id 47 --source-commit-id 99132ab0EXAMPLE --repository-name MyDemoRepo --author-name "Maria Garcia" --email "maria_garcia@example.com" --commit-message "Merging pull request 47 by three-way with default options"
   ```

   正常に実行されると、このコマンドは早送りによるマージと同じ種類の次のような出力を行います。

   ```
   {
       "pullRequest": {
           "approvalRules": [
               {
                   "approvalRuleContent": "{\"Version\": \"2018-11-08\",\"DestinationReferences\": [\"refs/heads/main\"],\"Statements\": [{\"Type\": \"Approvers\",\"NumberOfApprovalsNeeded\": 2,\"ApprovalPoolMembers\": [\"arn:aws:sts::123456789012:assumed-role/CodeCommitReview/*\"]}]}",
                   "approvalRuleId": "dd8b17fe-EXAMPLE",
                   "approvalRuleName": "2-approver-rule-for-main",
                   "creationDate": 1571356106.936,
                   "lastModifiedDate": 571356106.936,
                   "lastModifiedUser": "arn:aws:iam::123456789012:user/Mary_Major",
                   "originApprovalRuleTemplate": {
                       "approvalRuleTemplateId": "dd8b17fe-EXAMPLE",
                       "approvalRuleTemplateName": "2-approver-rule-for-main"
                   },
                   "ruleContentSha256": "4711b576EXAMPLE"
               }
           ],
           "authorArn": "arn:aws:iam::123456789012:user/Li_Juan",
           "clientRequestToken": "",
           "creationDate": 1508530823.142,
           "description": "Review the latest changes and updates to the global variables",
           "lastActivityDate": 1508887223.155,
           "pullRequestId": "47",
           "pullRequestStatus": "CLOSED",
           "pullRequestTargets": [
               {
                   "destinationCommit": "9f31c968EXAMPLE",
                   "destinationReference": "refs/heads/main",
                   "mergeMetadata": {
                       "isMerged": true,
                       "mergedBy": "arn:aws:iam::123456789012:user/Mary_Major"
                   },
                   "repositoryName": "MyDemoRepo",
                   "sourceCommit": "99132ab0EXAMPLE",
                   "sourceReference": "refs/heads/variables-branch"
               }
           ],
           "title": "Consolidation of global variables"
       }
   }
   ```

# AWS CodeCommit リポジトリ内のプルリクエストの競合を解決する
<a name="how-to-resolve-conflict-pull-request"></a>

プルリクエストに競合があるためにマージできない場合、つぎのいずれかの方法でこの競合の解決を試みることができます。
+ ローカルコンピューターで、**git diff** コマンドを使用して 2 つのブランチ間の競合を見つけ、解決するために変更を加えます。また、別のツールや他のソフトウェアを使用して差異を見つけて解決を試みることもできます。満足できる解決方法を実行したら、解決した競合が含まれる変更がある送信元のブランチをプッシュして、プルリクエストを更新できます。**git diff** および **git difftool** についての詳細は、Git ドキュメントを参照してください。
+ コンソールでは、[**Resolve conflicts (競合の解決)**] を選択できます。これにより、プレーンテキストエディタが開き、**git diff** コマンドに類似する方法で競合が表示されます。競合が含まれるファイルごとに手動で競合を確認し、変更を加えたら、変更されたものでプルリクエストを更新します。
+ AWS CLI では、AWS CLI を使用して競合のマージについての情報を取得し、マージをテストするために非参照のマージコミットを作成できます。

**Topics**
+ [プルリクエストの競合を解決する (コンソール)](#how-to-resolve-conflict-pull-request-console)
+ [プルリクエスト内の競合を解決する (AWS CLI)](#how-to-resolve-conflict-pull-request-cli)

## プルリクエストの競合を解決する (コンソール)
<a name="how-to-resolve-conflict-pull-request-console"></a>

CodeCommit コンソールを使用して、CodeCommit リポジトリ内のプルリクエストにおける競合を解決できます。

1. [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) で CodeCommit コンソールを開きます。

1. **リポジトリ**で、リポジトリの名前を選択します。

1. ナビゲーションペインで、[**プルリクエスト**] を選択します。

1. デフォルトでは、すべてのオープンプルリクエストが一覧表示されます。マージしたいけれど、競合があるオープンプルリクエストを選択します。

1. プルリクエストで [**Resolve conflicts**] を選択します。このオプションは、プルリクエストがマージできるようになる前に競合を解決する必要がある場合のみ表示されます。  
![\[プルリクエストがマージできるようになる前に解決する必要がある競合があることを示すプルリクエスト。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-pull-request-resolve-conflicts.png)

1. 解決する必要がある競合がある各ファイルをリスト化した競合解決ウィンドウが開きます。リストの各ファイルを選択して競合を確認し、すべての競合が解決されるまで必要な変更を加えます。  
![\[まだ解決されていない競合があるファイルを示す競合解決エディタ。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-pull-request-resolve.png)
   + 送信元のファイルコンテンツあるいは送信先のファイルコンテンツを使用するかを選択でき、また、ファイルがバイナリファイルではない場合には手動でファイルのコンテンツを編集して必要な変更のみが含まれるようにできます。スタンダード git diff マーカーは、ファイルの送信先ブランチ (HEAD) と送信元ブランチ間の競合を示すために使用されます。
   + ファイルがバイナリファイル、Git サブモジュールの場合、またはファイルあるいはフォルダの名前の競合がある場合、競合を解決するために送信元のファイルあるいは送信先のファイルを使用するかを選択する必要があります。CodeCommit コンソールでバイナリファイルを表示あるいは編集することはできません。
   + ファイルモードの競合がある場合、送信元ファイルのファイルモードと送信先ファイルのファイルモードのどちらかを選択することで、解決するためのオプションが表示されます。
   + ファイルの変更を破棄して競合状態に戻すには、[**Reset file (ファイルのリセット)**] を選択します。これにより、異なる方法で競合を解決できます。

1. 変更に満足したら、[**Update pull request (プルリクエストの更新)**] を選択します。
**注記**  
変更を使用してプルリクエストを正常に更新する前に、すべてのファイルですべての競合を解決する必要があります。

1. プルリクエストは、変更を使用して更新され、マージ可能になります。マージページが表示されます。この時点でプルリクエストをマージするか、またはプルリクエストのリストに戻るかを選択できます。

## プルリクエスト内の競合を解決する (AWS CLI)
<a name="how-to-resolve-conflict-pull-request-cli"></a>

CodeCommit で AWS CLI コマンドを使用するには、AWS CLI をインストールします。詳細については、「[コマンドラインリファレンス](cmd-ref.md)」を参照してください。

いずれの AWS CLI コマンドも単一でプルリクエスト内の競合を解決して、このリクエストをマージすることを許可しません。ただし、個別のコマンドを使用すると、競合の検出、これらの解決の試行、およびプルリクエストがマージ可能かどうかのテストを行うことができます。次を使用できます。
+ **get-merge-options** を使用して、どのマージオプションが 2 つのコミット識別子間のマージに使用できるかを検出します。
+ **get-merge-conflicts** を使用して、2 つのコミット識別子間のマージにおけるマージ競合があるファイルのリストを返します。
+ **batch-describe-merge-conflicts** を使用して、指定するマージ戦略を使用した 2 つのコミット間のマージにおけるファイル内のすべてのマージ競合についての情報を取得します。
+ **describe-merge-conflicts** を使用して、指定するマージ戦略を使用した 2 つのコミット間の特定のファイルにおけるマージ競合に関する詳細を取得します。
+ **create-unreferenced-merge-commit** を使用して、指定するマージ戦略を使用した 2 つのコミット識別子をマージする結果をテストします。

1. <a name="get-merge-options"></a>2 つのコミット識別子間でのマージに使用できるマージオプションを判断するためには、次を指定して **get-merge-options** コマンドを実行します。
   + マージの送信元のコミット識別子 (**--source-commit-specifier** オプションを指定)。
   + マージの送信先のコミット識別子 (**--destination-commit-specifier** オプションを指定)。
   + レポジトリの名前 (**--repository-name** オプションを指定)。
   + (オプション) 使用する競合解決戦略 (**--conflict-resolution-strategy** オプションを指定)。
   + (オプション) すべての競合についての詳細度レベル (**--conflict-detail-level** オプションを指定)。

    例えば、*bugfix-1234* という名前の送信元ブランチを *MyDemoRepo* という名前のリポジトリ内で *main* という名前の送信先ブランチにマージするために使用できるマージ戦略を判断するためには、次のようにします。

   ```
   aws codecommit get-merge-options --source-commit-specifier bugfix-1234 --destination-commit-specifier main --repository-name MyDemoRepo
   ```

   このコマンドが正常に実行されると、次のような出力が生成されます。

   ```
   {
       "mergeOptions": [
           "FAST_FORWARD_MERGE",
           "SQUASH_MERGE",
           "THREE_WAY_MERGE"
       ],
       "sourceCommitId": "d49940adEXAMPLE",
       "destinationCommitId": "86958e0aEXAMPLE",
       "baseCommitId": "86958e0aEXAMPLE"
   }
   ```

1. <a name="get-merge-conflict"></a>2 つのコミット識別子間のマージのマージ競合が含まれるファイルのリストを取得するには、次を指定して **get-merge-conflicts** コマンドを実行します。
   + マージの送信元のコミット識別子 (**--source-commit-specifier** オプションを指定)。
   + マージの送信先のコミット識別子 (**--destination-commit-specifier** オプションを指定)。
   + レポジトリの名前 (**--repository-name** オプションを指定)。
   + 使用するマージオプション (**--merge-option** オプションを指定)。
   + (オプション) すべての競合についての詳細度レベル (**--conflict-detail-level** オプションを指定)。
   + (オプション) 使用する競合解決戦略 (**--conflict-resolution-strategy** オプションを指定)。
   + (オプション) 返す競合があるファイルの最大数 (**--max-conflict-files** オプションを指定)。

   例えば、MyDemoRepo という名前のリポジトリで 3 方向マージ戦略を使用した、feature-randomizationfeature という名前の送信元ブランチと main という名前の送信先ブランチ間のマージにおける競合があるファイルのリストを取得するには、次のようにします。

   ```
   aws codecommit get-merge-conflicts --source-commit-specifier feature-randomizationfeature --destination-commit-specifier main --merge-option THREE_WAY_MERGE --repository-name MyDemoRepo
   ```

   このコマンドが正常に実行されると、次のような出力が生成されます。

   ```
   {
       "mergeable": false,
       "destinationCommitId": "86958e0aEXAMPLE",
       "sourceCommitId": "6ccd57fdEXAMPLE",
       "baseCommitId": "767b6958EXAMPLE",
       "conflictMetadataList": [
           {
               "filePath": "readme.md",
               "fileSizes": {
                   "source": 139,
                   "destination": 230,
                   "base": 85
               },
               "fileModes": {
                   "source": "NORMAL",
                   "destination": "NORMAL",
                   "base": "NORMAL"
               },
               "objectTypes": {
                   "source": "FILE",
                   "destination": "FILE",
                   "base": "FILE"
               },
               "numberOfConflicts": 1,
               "isBinaryFile": {
                   "source": false,
                   "destination": false,
                   "base": false
               },
               "contentConflict": true,
               "fileModeConflict": false,
               "objectTypeConflict": false,
               "mergeOperations": {
                   "source": "M",
                   "destination": "M"
               }
           }
       ]
   }
   ```

1. <a name="batch-describe-merge-conflicts"></a>2 つのコミット識別子間のマージにおいて、すべてのファイルあるいはファイルのサブセットないのマージ競合についての情報を取得するには、**batch-describe-merge-conflicts** コマンドを実行します。
   + マージの送信元のコミット識別子 (**--source-commit-specifier** オプションを指定)。
   + マージの送信先のコミット識別子 (**--destination-commit-specifier** オプションを指定)。
   + 使用するマージオプション (**--merge-option** オプションを指定)。
   + レポジトリの名前 (**--repository-name** オプションを指定)。
   + (オプション) 使用する競合解決戦略 (**--conflict-resolution-strategy** オプションを指定)。
   + (オプション) すべての競合についての詳細度レベル (**--conflict-detail-level** オプションを指定)。
   + (オプション) 返されるマージハンクの最大数 (**--max-merge-hunks** オプションを指定)。
   + (オプション) 返す競合があるファイルの最大数 (**--max-conflict-files** オプションを指定)。
   + (オプション) 競合を説明するために使用されるターゲットファイルのパス (**--file-paths** オプションを指定)。

    例えば、*feature-randomizationfeature* という名前の送信元のブランチと *main* という名前の送信先ブランチを *MyDemoRepo* という名前のリポジトリで *THREE\$1WAY\$1MERGE* 戦略を使用してマージするときのマージ競合を判断するためには、次のようにします。

   ```
   aws codecommit batch-describe-merge-conflicts --source-commit-specifier feature-randomizationfeature --destination-commit-specifier main --merge-option THREE_WAY_MERGE --repository-name MyDemoRepo
   ```

   このコマンドが正常に実行されると、次のような出力が生成されます。

   ```
   {
       "conflicts": [
           {
               "conflictMetadata": {
                   "filePath": "readme.md",
                   "fileSizes": {
                       "source": 139,
                       "destination": 230,
                       "base": 85
                   },
                   "fileModes": {
                       "source": "NORMAL",
                       "destination": "NORMAL",
                       "base": "NORMAL"
                   },
                   "objectTypes": {
                       "source": "FILE",
                       "destination": "FILE",
                       "base": "FILE"
                   },
                   "numberOfConflicts": 1,
                   "isBinaryFile": {
                       "source": false,
                       "destination": false,
                       "base": false
                   },
                   "contentConflict": true,
                   "fileModeConflict": false,
                   "objectTypeConflict": false,
                   "mergeOperations": {
                       "source": "M",
                       "destination": "M"
                   }
               },
               "mergeHunks": [
                   {
                       "isConflict": true,
                       "source": {
                           "startLine": 0,
                           "endLine": 3,
                           "hunkContent": "VGhpcyBpEXAMPLE=="
                       },
                       "destination": {
                           "startLine": 0,
                           "endLine": 1,
                           "hunkContent": "VXNlIHRoEXAMPLE="
                       }
                   }
               ]
           }
       ],
       "errors": [],
       "destinationCommitId": "86958e0aEXAMPLE",
       "sourceCommitId": "6ccd57fdEXAMPLE",
       "baseCommitId": "767b6958EXAMPLE"
   }
   ```

1. <a name="describe-merge-conflicts"></a>2 つのコミット識別子間のマージの特定のファイルにおけるマージ競合についての詳細を取得するには、次を指定して **describe-merge-conflicts** コマンドを実行します。
   + マージの送信元のコミット識別子 (**--source-commit-specifier** オプションを指定)。
   + マージの送信先のコミット識別子 (**--destination-commit-specifier** オプションを指定)。
   + 使用するマージオプション (**--merge-option** オプションを指定)。
   + 競合を説明するために使用するターゲットファイルのパス (**--file-path** オプションを指定)。
   + レポジトリの名前 (**--repository-name** オプションを指定)。
   + (オプション) 使用する競合解決戦略 (**--conflict-resolution-strategy** オプションを指定)。
   + (オプション) すべての競合についての詳細度レベル (**--conflict-detail-level** オプションを指定)。
   + (オプション) 返されるマージハンクの最大数 (**--max-merge-hunks** オプションを指定)。
   + (オプション) 返す競合があるファイルの最大数 (**--max-conflict-files** オプションを指定)。

   例えば、*readme.md* という名前のファイルで *feature-randomizationfeature* という名前の送信元ブランチと *main* という名前の送信先ブランチでの *MyDemoRepo* という名前のリポジトリ内の *THREE\$1WAY\$1MERGE* 戦略を使用したマージ競合を判断するには、次のようにします。

   ```
   aws codecommit describe-merge-conflicts --source-commit-specifier feature-randomizationfeature --destination-commit-specifier main --merge-option THREE_WAY_MERGE --file-path readme.md --repository-name MyDemoRepo
   ```

   このコマンドが正常に実行されると、次のような出力が生成されます。

   ```
   {
       "conflictMetadata": {
           "filePath": "readme.md",
           "fileSizes": {
               "source": 139,
               "destination": 230,
               "base": 85
           },
           "fileModes": {
               "source": "NORMAL",
               "destination": "NORMAL",
               "base": "NORMAL"
           },
           "objectTypes": {
               "source": "FILE",
               "destination": "FILE",
               "base": "FILE"
           },
           "numberOfConflicts": 1,
           "isBinaryFile": {
               "source": false,
               "destination": false,
               "base": false
           },
           "contentConflict": true,
           "fileModeConflict": false,
           "objectTypeConflict": false,
           "mergeOperations": {
               "source": "M",
               "destination": "M"
           }
       },
       "mergeHunks": [
           {
               "isConflict": true,
               "source": {
                   "startLine": 0,
                   "endLine": 3,
                   "hunkContent": "VGhpcyBpEXAMPLE=="
               },
               "destination": {
                   "startLine": 0,
                   "endLine": 1,
                   "hunkContent": "VXNlIHRoEXAMPLE="
               }
           }
       ],
       "destinationCommitId": "86958e0aEXAMPLE",
       "sourceCommitId": "6ccd57fdEXAMPLE",
       "baseCommitId": "767b69580EXAMPLE"
   }
   ```

1. <a name="create-unreferenced-merge-commit"></a>2 つのコミット識別子をマージした結果を表す非参照のコミットを作成するには、次を指定して **create-unreferenced-merge-commit** コマンドを実行します。
   + マージの送信元のコミット識別子 (**--source-commit-specifier** オプションを指定)。
   + マージの送信先のコミット識別子 (**--destination-commit-specifier** オプションを指定)。
   + 使用するマージオプション (**--merge-option** オプションを指定)。
   + レポジトリの名前 (**--repository-name** オプションを指定)。
   + (オプション) 使用する競合解決戦略 (**--conflict-resolution-strategy** オプションを指定)。
   + (オプション) すべての競合についての詳細度レベル (**--conflict-detail-level** オプションを指定)。
   + (オプション) 含めるコミットメッセージ (**--commit-message** オプションを指定)。
   + (オプション) コミットに使用する名前 (**--name** オプションを指定)。
   + (オプション) コミットに使用する E メールアドレス (**--email** オプションを指定)。
   + (オプション) 空のフォルダを保持するかどうか (**--keep-empty-folders** オプションを指定)。

    例えば、*bugfix-1234* という名前の送信元のブランチと *main* という名前の送信先ブランチを *MyDemoRepo* という名前のリポジトリで ACCEPT\$1SOURCE 戦略を使用してマージするときのマージ競合を判断するためには、次のようにします。

   ```
   aws codecommit create-unreferenced-merge-commit --source-commit-specifier bugfix-1234 --destination-commit-specifier main --merge-option THREE_WAY_MERGE --repository-name MyDemoRepo --name "Maria Garcia" --email "maria_garcia@example.com" --commit-message "Testing the results of this merge."
   ```

   このコマンドが正常に実行されると、次のような出力が生成されます。

   ```
   {
       "commitId": "4f178133EXAMPLE",
       "treeId": "389765daEXAMPLE"
   }
   ```

# AWS CodeCommit リポジトリでプルリクエストを閉じる
<a name="how-to-close-pull-request"></a>

コードをマージせずにプルリクエストを閉じる場合、次のいずれかの方法を使用できます。
+ コンソールでは、コードをマージせずにプルリクエストをクローズできます。これを行うのは、上記のように、**git merge** コマンドを使用してブランチを手動でマージする場合や、プルリクエストソースブランチのコードが送信先ブランチにマージするコードではない場合です。
+ プルリクエストで指定されたソースブランチを削除できます。CodeCommit は、プルリクエストの送信元ブランチまたは送信先ブランチのいずれかが削除された場合、プルリクエストを自動的にクローズします。
+ では AWS CLI、プルリクエストのステータスを から `OPEN`に更新できます`CLOSED`。これによって、コードをマージせずにプルリクエストがクローズされます。

**Topics**
+ [プルリクエストをクローズする (コンソール)](#how-to-close-pull-request-console)
+ [プルリクエストをクローズする (AWS CLI)](#how-to-close-pull-request-cli)

## プルリクエストをクローズする (コンソール)
<a name="how-to-close-pull-request-console"></a>

CodeCommit コンソールを使用して、CodeCommit リポジトリ内のプルリクエストを閉じることができます。プルリクエストのステータスが **Closed** に変更されると、それを **Open** に戻すことはできませんが、ユーザーは変更についてコメントしたり、コメントに返信することができます。

1. [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) で CodeCommit コンソールを開きます。

1. **リポジトリ**で、リポジトリの名前を選択します。

1. ナビゲーションペインで、[**プルリクエスト**] を選択します。

1. デフォルトでは、すべてのオープンプルリクエストが一覧表示されます。解決済みにする未解決のプルリクエストを選択します。  
![\[CodeCommit コンソールに表示されるプルリクエスト。\]](http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/images/codecommit-pull-request-view.png)

1. プルリクエストで、[**Close pull request (プルリクエストのクローズ)**] を選択します。このオプションは、ソースブランチを送信先ブランチにマージすることなくプルリクエストをクローズします。このオプションでは、プルリクエストをクローズする際にソースブランチを削除する方法は提供していませんが、リクエストがクローズされた後にソースブランチを自分で削除することができます。

## プルリクエストをクローズする (AWS CLI)
<a name="how-to-close-pull-request-cli"></a>

CodeCommit で AWS CLI コマンドを使用するには、 をインストールします AWS CLI。詳細については、「[コマンドラインリファレンス](cmd-ref.md)」を参照してください。

**を使用して CodeCommit リポジトリのプルリクエスト AWS CLI を閉じるには**
+ リポジトリ内のプルリクエストのステータスを `OPEN` から `CLOSED` に更新するには、次のように指定して **update-pull-request-status** コマンドを実行します。
  + プルリクエストの ID (**--pull-request-id** オプションを指定)。
  + プルリクエストのステータス (**--pull-request-status** オプションを指定)。

  例えば、ID *42* のプルリクエストのステータスを `MyDemoRepo` という名前の CodeCommit リポジトリで *CLOSED* に更新するには、以下の操作を行います。

  ```
  aws codecommit update-pull-request-status --pull-request-id 42 --pull-request-status CLOSED  
  ```

  このコマンドが正常に実行されると、次のような出力が生成されます。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "codecommit:GetRepository",
              "Resource": [
                  "arn:aws:codecommit:us-east-2:111122223333:MySharedDemoRepo"
              ]
          }
      ]
  }
  ```

------