

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS CodeCommit 리포지토리에서 풀 요청 작업
<a name="pull-requests"></a>

풀 요청은 나와 리포지토리의 다른 사용자가 검토하고, 주석을 추가하며, 한 브랜치에서 다른 브랜치로 코드를 변경하기 위한 기본적인 방법입니다. 풀 요청을 사용하여 중요하지 않은 변경 내용이나 수정 사항, 중요 기능 추가 또는 릴리스된 소프트웨어의 새 버전에 대한 코드 변경 내용을 공동으로 검토할 수 있습니다. 다음은 풀 요청에 대한 한 가지 워크플로우입니다.

MyDemoRepo라는 리포지토리에서 작업 중인 개발자 Li Juan은 제품의 향후 버전에 추가될 새 기능 작업을 수행하려고 합니다. 그는 프로덕션 지원 코드와 별도로 유지하기 위해 기본 브랜치와 분리된 이 작업용 브랜치를 생성하여 *feature-randomizationfeature*라는 이름을 지정합니다. 그녀는 코드를 작성하여 설명을 추가하고 새 기능 코드를 이 브랜치에 푸시합니다. 변경 내용을 기본 브랜치에 병합하기 전에 다른 리포지토리 사용자가 품질 코드를 검토하게 하려 합니다. 이렇게 하기 위해 그녀는 풀 요청을 생성합니다. 풀 요청에는 작업용 브랜치와 자신이 변경 내용을 병합할 코드의 브랜치(이 경우 기본 브랜치) 간의 비교가 포함됩니다. 또한 지정된 수의 사용자가 풀 요청을 승인해야 하는 승인 규칙을 생성할 수 있습니다. 승인 사용자 풀을 지정할 수도 있습니다. 다른 사용자가 그녀의 코드와 변경 내용을 검토하고 주석과 제안을 추가합니다. 그녀는 다른 사용자의 주석을 반영하여 작업용 브랜치를 코드 변경 내용으로 여러 번 업데이트할 수 있습니다. 변경 내용은 CodeCommit에서 해당 브랜치에 푸시할 때마다 풀 요청에 통합됩니다. 또한 풀 요청이 미해결 상태인 동안 의도한 대상 브랜치에서 변경한 내용을 통합할 수 있으므로 사용자는 제안한 모든 변경 내용을 상황에 맞게 검토할 수 있습니다. 그녀와 검토자가 만족하고 승인 규칙 조건(있는 경우)이 충족되면 그녀 또는 검토자 중 한 명이 코드를 병합하고 풀 요청을 종료합니다.

![\[풀 요청 생성\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-pull-request-create.png)


풀 요청에는 검토를 요청할 코드를 포함하는 소스 브랜치와 검토한 코드를 변경할 대상 브랜치, 이렇게 두 개 브랜치가 필요합니다. 소스 브랜치에는 AFTER 커밋이 포함되며 이 커밋은 대상 브랜치에 병합하려는 변경 내용을 포함합니다. 대상 브랜치에는 BEFORE 커밋이 포함되며, 이 커밋은 풀 요청 브랜치가 대상 브랜치에 병합되기 전 코드의 상태를 나타냅니다. 병합 전략의 선택은 CodeCommit 콘솔에서 소스 브랜치와 대상 브랜치 간에 커밋이 병합되는 방법의 세부 사항에 영향을 줍니다. CodeCommit의 병합 전략에 대한 자세한 내용은 [풀 요청 병합 (콘솔)](how-to-merge-pull-request.md#how-to-merge-pull-request-console) 섹션을 참조하세요.

![\[before 커밋과 after 커밋 간의 관계를 보여주는 풀 요청의 소스 및 대상 브랜치\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-pull-request-concepts.png)


풀 요청은 소스 브랜치의 말단과 풀 요청이 생성될 당시의 대상 브랜치의 마지막 커밋 간의 차이를 표시하므로, 사용자는 변경 내용을 보고 그에 대한 설명을 추가할 수 있습니다. 주석에 따라 변경 내용을 소스 브랜치로 커밋하고 푸시함으로써 풀 요청을 업데이트할 수 있습니다.

![\[풀 요청의 행에 대한 설명 추가.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-pull-request-comment.png)


코드가 검토되고 승인 규칙 요구 사항(있는 경우)이 충족되면 다음과 같은 여러 방법 중 하나로 풀 요청을 종료할 수 있습니다.
+ 브랜치를 로컬에서 병합하여 변경 내용을 푸시합니다. 이렇게 하면 fast-forward merge 병합 전략을 사용하여 병합 충돌이 없을 경우 요청이 자동으로 닫힙니다.
+  AWS CodeCommit 콘솔을 사용하여 병합하지 않고 풀 요청을 종료하거나, 병합에서 충돌을 해결하거나, 충돌이 없는 경우 사용 가능한 병합 전략 중 하나를 사용하여 브랜치를 닫고 병합합니다.
+  AWS CLI를 사용합니다.

풀 요청을 생성하려면 먼저 다음을 수행해야 합니다.
+ 검토하려는 코드 변경 내용을 반드시 특정 브랜치(소스 브랜치)로 커밋해 놓고 푸시해 놓아야 합니다.
+ 다른 사용자가 풀 요청 및 변경 내용에 대해 알 수 있도록 리포지토리에 대한 알림을 설정합니다. (이 단계는 선택 사항이며, 권장 사항은 아닙니다.)
+ 승인 규칙 템플릿을 생성하여 리포지토리와 연결합니다. 그러면 코드 품질을 보장하기 위해 풀 요청에 대한 승인 규칙이 자동으로 생성됩니다. 자세한 내용은 [승인 규칙 템플릿 작업](approval-rule-templates.md) 단원을 참조하십시오.

Amazon Web Services 계정의 리포지토리 사용자에 대한 IAM 사용자를 설정하면 풀 요청을 더욱 효율적으로 할 수 있습니다. 어떤 사용자가 어떤 의견을 작성했는지 식별하기 더 쉽습니다. 다른 장점은 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)된 경우, 구독 사용자는 풀 요청 생성 시 이메일을 받게 됩니다.

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/ko_kr/codecommit/latest/userguide/images/codecommit-pull-request-view.png)

1. **풀 요청 생성**의 **소스**에서 검토하려는 변경 내용이 포함된 브랜치를 선택합니다.

1. **대상**에서, 풀 요청이 닫힐 때 코드 변경 내용을 병합할 브랜치를 선택합니다.

1. **비교**를 선택합니다. 두 브랜치에 대한 비교가 실행되고 그 차이가 표시됩니다. 풀 요청이 닫힐 때 두 브랜치를 자동으로 병합할지 여부를 결정하기 위한 분석도 수행됩니다.

1. 비교 세부 정보와 변경 내용을 검토하여, 검토를 요청할 변경 내용 및 커밋이 풀 요청에 포함되었는지 확인합니다. 포함되지 않은 경우 소스 및 대상 브랜치 선택을 조정하고 **비교**를 다시 선택합니다.

1. 풀 요청에 대한 비교 결과에 만족하면 **제목**에 이 검토 항목을 잘 설명하는 간단한 제목을 입력합니다. 이 제목은 리포지토리의 풀 요청 목록에 표시되는 제목입니다.

1. (선택 사항) **설명**에 이 검토 항목에 대한 세부 정보와 검토자에 대한 기타 유용한 정보를 입력합니다.

1. **생성**을 선택합니다.  
![\[풀 요청 생성\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-pull-request-create.png)

풀 요청이 리포지토리의 풀 요청 목록에 나타납니다. [알림을 구성](how-to-repository-email.md)한 경우, Amazon SNS 주제 구독자는 새로 생성된 풀 요청에 대해 알려 주는 이메일을 받습니다.

## 풀 요청 생성 (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*라는 소스 브랜치를 대상으로 *Please review these changes by Tuesday*라는 설명을 곁들여, *Pronunciation difficulty analyzer*라는 풀 요청을 생성합니다. 풀 요청은 `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. **리포지토리**에서 풀 요청에 대한 승인 규칙을 생성할 리포지토리의 이름을 선택합니다.

1. 탐색 창에서 **풀 요청**을 선택합니다.

1. 목록에서 승인 규칙을 생성할 풀 요청을 선택합니다. 미결 상태인 풀 요청에 대해서만 승인 규칙을 생성할 수 있습니다.  
![\[CodeCommit 콘솔에 표시된 리포지토리의 풀 요청 목록.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-pull-request-view.png)

1. 풀 요청에서 **승인**을 선택한 다음 **승인 규칙 생성**을 선택합니다.

1. **규칙 이름**에서 규칙에 해당 용도를 알 수 있도록 설명이 포함된 이름을 지정합니다. 예를 들어 풀 요청을 병합하기 전에 두 사람이 승인하도록 요구하려면 규칙 이름으로 **Require two approvals before merge**를 지정할 수 있습니다.
**참고**  
승인 규칙을 생성한 후에는 이름을 변경할 수 없습니다.

   **필요한 승인 수**에 원하는 숫자를 입력합니다. 기본값은 1입니다.  
![\[풀 요청에 대한 승인 규칙 생성\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-create-approval-rule.png)

1. (선택 사항) 특정 사용자 그룹에서 풀 요청에 대한 승인을 받도록 하려면 **승인 규칙 멤버**에서 **추가**를 선택합니다. **승인자 유형**에서 다음 중 하나를 선택합니다.
   + **IAM 사용자 이름 또는 위임된 역할**: 이 옵션은 로그인할 때 사용한 계정으로 AWS 계정 ID를 미리 채우며 오로지 이름만 필요로 합니다. 이 옵션은 제공된 이름과 일치하는 IAM 사용자 및 페더레이션 액세스 사용자 모두에 사용할 수 있습니다. 이 옵션은 폭넓은 유연성을 제공하는 매우 강력한 옵션입니다. 예를 들어, Amazon Web Services 계정 123456789012로 로그인하여 이 옵션을 선택하고 **Mary\$1Major**를 지정한 경우, 다음은 모두 해당 사용자의 승인으로 간주됩니다.
     + 해당 계정의 IAM 사용자 (`arn:aws:iam::123456789012:user/Mary_Major`)
     + IAM에서 Mary\$1Major로 식별되는 페더레이션 사용자 (`arn:aws:sts::123456789012:federated-user/Mary_Major`)

     이 옵션은 와일드카드가 포함되지 않는 한(`*Mary_Major`) 역할 세션 이름 Mary\$1Major(`arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major`)를 사용하여 **CodeCommitReview** 역할을 수임한 누군가의 활성 세션을 인식하지 못합니다. 역할 이름(`CodeCommitReview/Mary_Major`)을 명시적으로 지정할 수도 있습니다.
   + **정규화된 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 사용자 이름 또는 수임된 역할**을 선택한 경우, **값**에는 IAM 사용자나 역할의 이름 또는 사용자나 역할의 정규화된 ARN을 입력합니다. 필요한 승인 수에 해당 승인이 합산되는 모든 사용자 또는 역할을 추가할 때까지 **추가**를 다시 선택하여 사용자 또는 역할을 추가합니다.

   두 승인자 유형 모두 값에 와일드카드(\$1)를 사용할 수 있습니다. 예를 들어, **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. 승인 규칙 구성을 완료했으면 **제출**을 선택합니다.

 

## 풀 요청에 대한 승인 규칙 생성 (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**: 이 옵션에는 Amazon Web Services 계정과 리소스만 필요합니다. 이 옵션은 이름이 제공된 리소스 이름과 일치하는 IAM 사용자 및 페더레이션 액세스 사용자 모두에 사용할 수 있습니다. 이 옵션은 폭넓은 유연성을 제공하는 매우 강력한 옵션입니다. 예를 들어, Amazon Web Services 계정 123456789012 및 **Mary\$1Major**를 지정한 경우, 다음은 모두 해당 사용자의 승인으로 간주됩니다.
    + 해당 계정의 IAM 사용자 (`arn:aws:iam::123456789012:user/Mary_Major`)
    + IAM에서 Mary\$1Major로 식별되는 페더레이션 사용자 (`arn:aws:sts::123456789012:federated-user/Mary_Major`)

    이 옵션은 와일드카드가 포함되지 않는 한(`*Mary_Major`) 역할 세션 이름 Mary\$1Major(`arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major`)를 사용하여 **CodeCommitReview** 역할을 수임한 누군가의 활성 세션을 인식하지 못합니다.
  + **정규화된 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`라는 승인 규칙을 생성합니다. 이 규칙은 하나의 승인 풀에서 두 개의 승인이 필요하도록 지정합니다. 이 풀에는 `123456789012` Amazon Web Services 계정에서 **CodeCommitReview**의 역할을 수임하고 CodeCommit에 액세스할 수 있는 모든 사용자가 포함됩니다. 또한 동일한 Amazon Web Services 계정의 `Nikhil_Jayashankar`라는 IAM 사용자 또는 페더레이션 사용자도 포함됩니다.

  ```
  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 리포지토리의 풀 요청 목록을 볼 수 있습니다. 필터를 변경하여 특정 풀 요청 세트만 표시되도록 목록 표시 화면을 변경할 수 있습니다. 예를 들면 생성한 풀 요청 중에서 상태가 **미해결**인 풀 요청의 목록을 표시하도록 선택하거나, 다른 필터를 선택하고 생성한 풀 요청 중에서 상태가 **종결**인 풀 요청만 볼 수 있습니다.

1. [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home)에서 CodeCommit 콘솔을 엽니다.

1. **리포지토리**에서, 풀 요청을 보려 하는 리포지토리의 이름을 선택합니다.

1. 탐색 창에서 **풀 요청**을 선택합니다.

1. 기본적으로 모든 미해결 풀 요청 목록이 표시됩니다.  
![\[AWS CodeCommit 콘솔에 표시된 풀 요청입니다.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-pull-request-view-list.png)

1. 표시 필터를 변경하려면 사용할 수 있는 필터 목록에서 선택합니다.
   + **미해결 풀 요청**(기본값): 상태가 **미해결**인 모든 풀 요청을 표시합니다.
   + **모든 풀 요청**: 모든 풀 요청을 표시합니다.
   + **종결된 풀 요청**: 상태가 **종결**인 모든 풀 요청을 표시합니다.
   + **나의 풀 요청**: 상태와 관계없이 내가 생성한 모든 풀 요청을 표시합니다. 자신의 주석을 작성했거나 참여한 검토는 표시되지 않습니다.
   + **나의 미해결 풀 요청**: 내가 생성한 풀 요청 중 상태가 **미해결**인 풀 요청을 모두 표시합니다.
   + **나의 종결 풀 요청**: 내가 생성한 풀 요청 중 상태가 **종결**인 풀 요청을 모두 표시합니다.

1. 표시되는 목록에서 살펴볼 풀 요청을 찾으면 해당 풀 요청을 선택합니다.

## 풀 요청 보기 (AWS CLI)
<a name="how-to-view-pull-request-cli"></a>

CodeCommit에서 AWS CLI 명령을 사용하려면를 설치합니다 AWS CLI. 자세한 내용은 [명령줄 참조](cmd-ref.md) 단원을 참조하십시오.

다음 단계에 따라 AWS CLI 를 사용하여 CodeCommit 리포지토리에서 풀 요청을 봅니다.

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 사용자가 생성한 풀 요청을 나열하려면 다음과 같이 합니다.

   ```
   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. 풀 요청의 세부 정보를 보려면 풀 요청의 ID를 지정하여 **--pull-request-id** 옵션과 함께 **get-pull-request** 명령을 실행합니다. 예를 들어 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)** 사용). [get-pull-request](#get-pull-request) 명령을 사용하여 풀 요청의 현재 개정 ID를 얻을 수 있습니다.

   예를 들어 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. 풀 요청의 이벤트를 보려면 풀 요청의 ID를 지정하여 **--pull-request-id** 옵션과 함께 **describe-pull-request-events** 명령을 실행합니다. 예를 들어 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** 옵션 사용) 

   예를 들어, `MyDemoRepo`라는 리포지토리에서 *my-feature-branch*라는 소스 브랜츠의 끝과 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 콘솔을 사용하여 풀 요청에 포함된 변경 사항을 검토할 수 있습니다. 요청, 파일, 개별 코드 행에 설명을 추가할 수 있습니다. 또한 다른 사용자가 작성한 주석에 댓글을 달 수도 있습니다. 리포지토리가 [알림으로 구성된](how-to-repository-email.md) 경우 내 주석에 사용자가 댓글을 달거나, 풀 요청에 사용자가 주석을 추가할 때마다 이메일을 받게 됩니다.

 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/ko_kr/codecommit/latest/userguide/images/codecommit-pull-request-view-list.png)
**참고**  
종료 또는 병합된 풀 요청에 대해 주석을 달 수 있지만 병합하거나 다시 열 수는 없습니다.

1. 풀 요청에서 **변경 사항**을 선택합니다.

1. 다음 중 하나를 수행하세요.
   + 전체 풀 요청에 대한 전반적인 주석을 추가하려면 **변경 사항에 대한 주석**의 **새 주석**에 주석을 입력한 다음 **저장**을 선택합니다. [마크다운](https://docs.aws.amazon.com/general/latest/gr/aws-markdown.html)을 사용하거나 설명을 일반 텍스트로 입력할 수 있습니다.  
![\[풀 요청의 변경 내용에 대한 일반적인 설명.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-commenting-changecomment.png)
   + 커밋의 파일에 주석을 추가하려면 **변경 사항**에서 해당 파일 이름을 찾습니다. 파일 이름 옆에 나타나는 ![\[The comment bubble icon that that indicates that you can leave a comment on that line of code.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-commentbubble.png) 주석 아이콘을 선택하고 주석을 입력한 다음 **저장**을 선택합니다.  
![\[풀 요청의 파일에 대한 설명 추가.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-commenting-addfilecomment.png)
   + 풀 요청의 변경된 행에 주석을 추가하려면 **변경 사항**에서 주석을 작성할 행으로 이동합니다. 해당 행에 나타나는 ![\[The comment bubble icon that that indicates that you can leave a comment on that line of code.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-commentbubble.png) 주석 아이콘을 선택하고 주석을 입력한 다음 **저장**을 선택합니다.  
![\[풀 요청의 행에 대한 설명 추가.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-pull-request-comment.png)

1. 커밋의 주석에 답변하려면 **변경 사항** 또는 **활동**에서 **댓글**을 선택합니다. 텍스트와 이모티콘으로 댓글을 달 수 있습니다.  
![\[주석에 댓글 및 이모티콘 반응 추가.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-commenting-commenttab.png)

   특정 이모티콘 반응 댓글을 선택하여 응답한 사람들의 이름을 볼 수 있습니다. 모든 이모티콘 반응을 확인하고 누가 어떤 이모티콘으로 응답했는지에 대한 정보를 보려면 **모든 반응 보기**를 선택합니다. 주석에 이모티콘으로 응답한 경우 해당 응답이 이모티콘 반응 버튼 아이콘에 표시됩니다.
**참고**  
콘솔에 표시되는 반응 수는 페이지가 로드된 시점에 정확하게 합산됩니다. 이모티콘 반응 수에 대한 최신 정보를 보려면 페이지를 새로 고치거나 **모든 반응 보기**를 선택합니다.  
![\[주석에 이모티콘 반응으로 응답한 사용자에 대한 정보 보기.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-comment-view-reaction.png)

1. (선택 사항) Amazon CodeGuru Reviewer에서 생성한 권장 사항에 회신하려면(권장 사항 품질에 대한 피드백 제공 포함) **댓글**을 선택합니다. 응답 버튼을 사용하여 권장 사항의 승인 또는 거부 여부에 대한 일반 정보를 제공합니다. 의견 필드를 사용하여 응답에 대한 자세한 내용을 제공합니다.
**참고**  
Amazon CodeGuru Reviewer는 프로그램 분석 및 기계 학습을 사용하여 Java 또는 Python 코드에서 일반적인 문제를 감지하고 권장 수정 사항을 제공하는 자동화된 코드 검토 서비스입니다.  
리포지토리가 Amazon CodeGuru Reviewer와 연결되고, 분석이 완료되고, 풀 요청의 코드가 Java 또는 Python 코드인 경우에만, Amazon CodeGuru Reviewer 주석이 표시됩니다. 자세한 내용은 [Amazon CodeGuru Reviewer와 AWS CodeCommit 리포지토리 연결 또는 연결 해제](how-to-amazon-codeguru-reviewer.md) 단원을 참조하세요.
Amazon CodeGuru Reviewer 주석은 풀 요청의 최근 수정본에 대해 작성된 경우에만 **변경 사항** 탭에 표시됩니다. 이러한 주석은 항상 **활동** 탭에 표시됩니다.
Amazon CodeGuru Reviewer 추천에는 사용 가능한 모든 이모티콘 반응으로 응답할 수 있지만, 추천의 유용성을 평가하는 데는 좋아요 및 싫어요 이모티콘 반응만 사용됩니다.  
![\[검토 작업이 진행 중인 상태에서 Amazon CodeGuru Reviewer가 작성한 권장 사항입니다.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-pull-request-reply-bot.png)

1. 풀 요청에서 변경된 내용을 승인하려면 **승인**을 선택합니다.
**참고**  
직접 생성한 풀 요청을 승인할 수 없습니다.

   **승인**에서 승인, 풀 요청에 대한 승인 규칙, 승인 규칙 템플릿에 의해 생성된 승인 규칙을 볼 수 있습니다. 풀 요청을 승인하지 않으려면 **승인 취소**를 선택할 수 있습니다.
**참고**  
미결 상태인 풀 요청만 승인하거나 승인을 취소할 수 있습니다. 상태가 병합됨 또는 종료됨인 풀 요청은 승인하거나 승인을 취소할 수 없습니다.  
![\[풀 요청의 승인 및 승인 규칙.\]](http://docs.aws.amazon.com/ko_kr/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)을 실행합니다.

** AWS CLI 를 사용하여 CodeCommit 리포지토리의 풀 요청을 검토하려면**

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** 속성 사용).

   예를 들어, *"These don't appear to be used anywhere. Can we remove them?"*라는 주석을 쓴다고 가정하겠습니다. *MyDemoRepo*라는 리포지토리에서 *ahs\$1count.py* 파일의 변경 사항과 관련해, ID가 *47*인 풀 요청에 이 주석을 남기려면 다음과 같은 명령을 사용합니다.

   ```
   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)** 사용). [get-pull-request](how-to-view-pull-request.md#get-pull-request) 명령을 사용하여 풀 요청의 현재 개정 ID를 얻을 수 있습니다.
   + 적용할 승인 상태(**--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** 옵션 사용).

    예를 들어, *"Good catch. I'll remove them."* 라는 댓글을 *abcd1234EXAMPLEb5678efgh*라는 시스템 생성 ID로 해당 주석에 추가하려면 다음 명령을 사용합니다.

   ```
   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. 탐색 창에서 **풀 요청**을 선택합니다.

1. 승인 규칙을 편집하거나 삭제할 풀 요청을 선택합니다. 미결 상태인 풀 요청에 대한 승인 규칙만 편집하거나 삭제할 수 있습니다.  
![\[CodeCommit 콘솔에 표시된 리포지토리의 풀 요청 목록.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-pull-request-view.png)

1. 풀 요청에서 **승인**을 선택한 다음, 목록에서 편집하거나 삭제할 규칙을 선택합니다. 다음 중 하나를 수행하세요.
   + 규칙을 편집하려면 **편집**을 선택합니다.
   + 규칙을 삭제하려면 **삭제**를 선택한 다음 규칙 삭제를 확인하는 지침을 따릅니다.

1. **승인 규칙 편집**에서 규칙을 원하는 대로 변경한 다음 **제출**을 선택합니다.  
![\[승인 규칙 편집\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-pull-request-edit-rule.png)

1. 승인 규칙 구성을 완료했으면 **제출**을 선택합니다.

 

## 풀 요청에 대한 승인 규칙 편집 또는 삭제 (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) - 풀 요청에 대한 승인 규칙이 조건을 만족했는지 여부를 확인합니다.

** AWS CLI 를 사용하여 CodeCommit 리포지토리에서 풀 요청에 대한 승인 규칙을 편집하거나 삭제하려면**<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인* 풀 요청에 대해 *Require two approved approvers*라는 이름의 승인 규칙을 업데이트합니다. 이 규칙에는 *123456789012* Amazon Web Services 계정의 모든 IAM 사용자를 포함하는 승인 풀에서 한 명의 사용자 승인이 필요합니다.

   ```
   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*인 풀 요청에 대해 *My Approval Rule*이라는 이름의 승인 규칙을 삭제하려면 다음과 같이 합니다.

   ```
   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. **승인** 탭에서 **승인 규칙 재정의**를 선택합니다. 요구 사항이 무시되며 버튼 텍스트가 **취소 재정의**로 변경됩니다. 승인 규칙 요구 사항을 다시 적용하려면 **재정의 취소**를 선택합니다.

## 승인 규칙 재정의 (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>콘솔에서 사용 가능한 병합 전략 중 하나를 사용하여 소스 브랜치를 대상 브랜치에 병합할 수 있습니다. 그러면 풀 요청도 종료됩니다. 또한 콘솔에서 병합 충돌을 해결할 수 있습니다. 콘솔에는 풀 요청이 병합 가능한지 또는 충돌을 해결해야 하는지 나타내는 메시지가 표시됩니다. 모든 충돌을 해결하고 **병합**을 선택하면 선택한 병합 전략을 사용하여 병합이 수행됩니다. fast-forward는 기본 병합 전략으로, Git에 대한 기본 옵션입니다. 소스 브랜치와 대상 브랜치의 코드 상태에 따라 그 전략의 사용이 불가능할 수 있지만, squash 또는 3방향 같은 다른 옵션을 사용할 수 있습니다.
+ AWS CLI를 사용하여 fast-forward, squash 또는 3방향 병합 전략을 통해 풀 요청을 병합하고 종료할 수 있습니다.
+ <a name="why-git-merge"></a>로컬 컴퓨터에서 **git merge** 명령을 사용하여 대상 브랜치에 소스 브랜치를 병합한 다음 병합한 코드를 대상 브랜치에 푸시할 수 있습니다. 이 방법에는 신중하게 고려해야 할 단점이 있습니다. 풀 요청에 대한 승인 규칙의 요구 사항이 충족되었는지 여부에 관계없이 풀 요청을 병합하여 해당 컨트롤을 우회합니다. fast-forward 병합 전략을 사용하여 풀 요청을 병합하면 대상 브랜치를 병합하고 푸시할 때 자동으로 풀 요청도 종료됩니다. 이 방법의 한 가지 장점은 **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 리포지토리의 풀 요청을 병합할 수 있습니다. 풀 요청의 상태가 **병합됨**으로 변경된 후 미해결 풀 요청 목록에 더 이상 표시되지 않습니다. 병합된 풀 요청은 종결로 분류됩니다. 다시 **미해결**로 변경할 수는 없지만, 여전히 변경에 대한 설명을 남기고 설명에 댓글을 달 수 있습니다. 풀 요청이 병합되거나 종료된 후에는 해당 요청을 승인하거나 승인을 취소하거나 풀 요청에 적용된 승인 규칙을 재정의할 수 없습니다.

1. [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home)에서 CodeCommit 콘솔을 엽니다.

1. **리포지토리**에서 리포지토리의 이름을 선택합니다.

1. 탐색 창에서 **풀 요청**을 선택합니다.

1. 기본적으로 모든 미해결 풀 요청 목록이 표시됩니다. 병합하려는 미해결 풀 요청을 선택합니다.

1. 풀 요청에서 **승인**을 선택합니다. 승인자 목록을 검토하고 모든 승인 규칙(있는 경우)에서 해당 조건이 충족되었는지 확인합니다. 하나 이상의 승인 규칙이 상태가 **규칙이 충족되지 않음**인 경우 풀 요청을 병합할 수 없습니다. 아무도 풀 요청을 승인하지 않은 경우 병합할 것인지 또는 승인을 기다릴 것인지 고려하세요.
**참고**  
풀 요청에 대한 승인 규칙을 생성한 경우 이를 편집하거나 삭제하여 병합 차단을 해제할 수 있습니다. 승인 규칙 템플릿을 사용하여 승인 규칙을 생성한 경우에는 편집하거나 삭제할 수 없습니다. 요구 사항을 재정의하도록 선택할 수만 있습니다. 자세한 내용은 [풀 요청에 대한 승인 규칙 재정의](how-to-override-approval-rules.md) 섹션을 참조하세요.  
![\[한 승인 규칙에서 조건이 충족되지 않고 승인자 목록이 비어 있는 풀 요청입니다.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-approval-rule-not-met.png)

1. **병합**을 선택합니다.

1. 풀 요청에서 사용 가능한 병합 전략 중에서 선택합니다. 적용할 수 없는 병합 전략은 회색으로 표시됩니다. 병합 전략을 사용할 수 없는 경우 CodeCommit 콘솔에서 충돌을 수동으로 해결하도록 선택하거나 Git 클라이언트를 사용하여 로컬로 충돌을 해결할 수 있습니다. 자세한 내용은 [AWS CodeCommit 리포지토리에서 풀 요청의 충돌 해결](how-to-resolve-conflict-pull-request.md) 섹션을 참조하세요.  
![\[CodeCommit 콘솔 내 병합에 사용 가능한 병합 전략을 보여주는 풀 요청.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-merge-squash.png)
   + 패스트-포워드 병합은 대상 브랜치의 참조를 소스 브랜치의 가장 최근 커밋으로 전진시킵니다. 가능한 경우 이는 Git의 기본 동작입니다. 병합 커밋은 생성되지 않지만 소스 브랜치의 모든 커밋 이력이 마치 대상 브랜치에서 발생한 것처럼 유지됩니다. fast-forward 병합은 병합 커밋이 생성되지 않기 때문에 대상 브랜치 기록의 커밋 시각화 도우미 보기에 브랜치 병합으로 나타나지 않습니다. 소스 브랜치의 팁은 대상 브랜치의 팁으로 빠르게 넘어갑니다.
   + squash 병합은 소스 브랜치의 변경 내용을 포함하는 하나의 커밋을 생성하고 단일 squash된 커밋을 대상 브랜치에 적용합니다. 기본적으로 squash 커밋의 커밋 메시지에는 소스 브랜치의 변경 사항에 대한 모든 커밋 메시지가 포함됩니다. 브랜치 변경 내용의 개별 커밋 이력은 유지되지 않습니다. 이렇게 하면 대상 브랜치 이력의 커밋 시각화 도우미 보기에서 병합의 그래픽 표현을 유지하면서도 리포지토리 이력을 단순화할 수 있습니다.
   + 3방향 병합은 대상 브랜치의 병합을 위한 병합 커밋을 생성하지만 대상 브랜치 이력의 일환으로 소스 브랜치에서 실행된 개별 커밋도 유지합니다. 이렇게 하면 리포지토리 변경 내용의 완전한 이력을 유지할 수 있습니다.

1. squash 또는 3방향 병합 전략을 선택하면 정보를 변경하려는 경우 자동으로 생성된 커밋 메시지를 검토하고 수정합니다. 커밋 이력에 대해 사용자의 이름과 이메일 주소를 추가합니다.

1. (선택 사항) 병합의 일환으로 소스 브랜치를 삭제하는 옵션을 선택 취소합니다. 기본값은 풀 요청이 병합될 때 소스 브랜치를 삭제하는 것입니다.

1. **풀 요청 병합**을 선택하여 병합을 완료합니다.

## 풀 요청 병합 (AWS CLI)
<a name="how-to-merge-pull-request-cli"></a>

CodeCommit에서 AWS CLI 명령을 사용하려면 AWS CLI를 설치합니다. 자세한 내용은 [명령줄 참조](cmd-ref.md) 섹션을 참조하세요.

**CodeCommit 리포지토리에서 AWS CLI를 사용하여 풀 요청을 병합하려면**

1. <a name="evaluate-pull-request-approval-rules"></a>풀 요청이 모든 승인 규칙이 충족되고 병합할 준비가 되었는지 여부를 평가하려면 다음을 지정하여 **evaluate-pull-request-approval-rules** 명령을 실행합니다.
   + 풀 요청의 ID(**--pull-request-id** 옵션 사용).
   + 풀 요청의 개정 ID(**--revision-id option)** 사용). **[get-pull-request](how-to-view-pull-request.md#get-pull-request)** 명령을 사용하여 풀 요청에 대한 현재 개정 ID를 가져올 수 있습니다.

   예를 들어 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. fast-forward merge 전략을 사용하여 풀 요청을 병합하고 닫으려면 다음을 지정하여 **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. squash 병합 전략을 사용하여 풀 요청을 병합하고 닫으려면 다음을 지정하여 **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** 옵션 사용).
   + 커밋에 사용할 이메일 주소(**--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"
   ```

   이 명령이 제대로 실행되면 다음과 유사한 fast-forward 병합의 출력과 같은 종류의 출력이 생성됩니다.

   ```
   {
       "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** 옵션 사용).
   + 커밋에 사용할 이메일 주소(**--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"
   ```

   이 명령이 제대로 실행되면 다음과 유사한 fast-forward 병합의 출력과 같은 종류의 출력이 생성됩니다.

   ```
   {
       "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 설명서를 참조하세요.
+ 콘솔에서 **충돌 해결**을 선택할 수 있습니다. 이렇게 하면 **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. 풀 요청에서 **충돌 해결**을 선택합니다. 이 옵션은 풀 요청을 병합할 수 있기 전에 해결해야 할 충돌이 있는 경우에만 나타납니다.  
![\[풀 요청을 병합할 수 있기 전에 해결해야 할 충돌이 있음을 보여주는 풀 요청.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-pull-request-resolve-conflicts.png)

1. 충돌 해결 창이 해결해야 할 충돌이 있는 각 파일 목록을 엽니다. 목록에서 충돌을 검토할 각 파일을 선택하고 모든 충돌이 해결될 때까지 필요한 변경을 실시합니다.  
![\[아직 해결되지 않은 충돌이 있는 파일을 보여주는 충돌 해결 편집기.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-pull-request-resolve.png)
   + 소스 파일 콘텐츠, 대상 파일 콘텐츠를 사용하도록 선택하거나 파일이 이진 파일이 아닌 경우 원하는 변경 사항만 포함되도록 파일의 콘텐츠를 수동으로 편집하도록 선택할 수 있습니다. 표준 git 차이점 마커는 파일의 대상(HEAD) 브랜치와 소스 브랜치 간의 충돌을 표시하는 데 사용됩니다.
   + 파일이 이진 파일, Git 하위 모듈이거나 파일/폴더 이름 충돌이 있는 경우 충돌을 해결하기 위해 소스 파일 또는 대상 파일을 사용하도록 선택해야 합니다. CodeCommit 콘솔에서는 이진 파일을 보거나 편집할 수 없습니다.
   + 파일 모드 충돌이 있는 경우 소스 파일의 파일 모드와 대상 파일의 파일 모드 중에서 선택하여 충돌을 해결하는 옵션이 표시됩니다.
   + 파일의 변경 사항을 폐기하고 파일을 충돌 상태로 복원하려면 **파일 재설정**을 선택합니다. 이렇게 하면 다른 방법으로 충돌을 해결할 수 있습니다.

1. 변경 사항에 만족하면 **풀 요청 업데이트**를 선택합니다.
**참고**  
변경 사항으로 풀 요청을 성공적으로 업데이트할 수 있기 전에 모든 파일의 모든 충돌을 해결해야 합니다.

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** 옵션 사용).

    예를 들어, *MyDemoRepo*라는 리포지토리에서 *bugfix-1234*라는 소스 브랜치를 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라는 리포지토리에서 three-way merge(삼방향 병합 전략)을 사용하여 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** 옵션 사용).

    예를 들어, *MyDemoRepo*라는 리포지토리에서 *삼방향 병합(THREE\$1WAY\$1MERGE)* 전략을 활용하여 *feature-randomizationfeature*라는 소스 브랜치를 main이라는 대상 브랜치와 병합할 때 발생하는 병합 충돌을 확인하려면, 다음과 같이 합니다. ** 

   ```
   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** 옵션 사용).

   예를 들어, *MyDemoRepo*라는 리포지토리에서 *삼방향 병합(THREE\$1WAY\$1MERGE)* 전략을 활용하여 *feature-randomizationfeature*라는 소스 브랜치와 main이라는 대상 브랜치에 있는 *readme.md*라는 파일을 병합할 때 발생하는 충돌을 확인하려면, 다음과 같이 합니다. ** 

   ```
   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** 옵션 사용).
   + (선택 사항) 커밋에 사용할 이메일 주소(**--email** 옵션 사용).
   + (선택 사항) 빈 폴더의 유지 여부(**--keep-empty-folders** 옵션 사용).

    예를 들어 *MyDemoRepo*라는 리포지토리에서 소스 수용(ACCEPT\$1SOURCE) 전략을 사용하여 *bugfix-1234*라는 소스 브랜치를 main이라는 대상 브랜치와 병합할 때 발생하는 병합 충돌을 확인하려면, 다음과 같이 합니다. ** 

   ```
   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 리포지토리에서 풀 요청을 닫을 수 있습니다. 풀 요청의 상태가 **종결**로 변경되면 다시 **미해결**로 변경할 수 없지만, 사용자는 여전히 변경 사항에 대한 주석을 남기고 주석에 댓글을 달 수 있습니다.

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/ko_kr/codecommit/latest/userguide/images/codecommit-pull-request-view.png)

1. 풀 요청에서 **풀 요청 닫기**를 선택합니다. 이 옵션은 소스 브랜치를 대상 브랜치로 병합하지 않고 풀 요청을 닫습니다. 이 옵션은 풀 요청을 종료하는 과정에서 소스 브랜치를 삭제하는 방법을 제공하지는 않지만, 요청이 종료된 후에 직접 삭제할 수 있습니다.

## 풀 요청 닫기(AWS CLI)
<a name="how-to-close-pull-request-cli"></a>

CodeCommit에서 AWS CLI 명령을 사용하려면를 설치합니다 AWS CLI. 자세한 내용은 [명령줄 참조](cmd-ref.md) 단원을 참조하십시오.

** AWS CLI 를 사용하여 CodeCommit 리포지토리에서 풀 요청을 닫으려면**
+ 리포지토리의 풀 요청 상태를 `OPEN`에서 `CLOSED`로 업데이트하려면 다음을 지정하여 **update-pull-request-status** 명령을 실행합니다.
  + 풀 요청의 ID(**--pull-request-id** 옵션 사용).
  + 풀 요청의 상태(**--pull-request-status** 옵션 사용).

  예를 들어, `MyDemoRepo`라는 CodeCommit 리포지토리에서 ID가 *42*인 풀 요청의 상태를 *종결* 상태로 업데이트하려면 다음과 같이 합니다.

  ```
  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"
              ]
          }
      ]
  }
  ```

------