

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

# AWS CodeCommit 리포지토리의 브랜치 작업
<a name="branches"></a>

브랜치란 무엇인가요? Git에서 브랜치는 커밋에 대한 포인터 또는 참조입니다. 개발 시 작업을 체계적으로 정리할 수 있는 편리한 수단입니다. 브랜치를 사용하면 다른 브랜치의 작업에 영향을 주지 않으면서 파일의 새 버전이나 다른 버전에 대한 작업을 분리할 수 있습니다. 브랜치를 사용하면 새 기능을 개발하고 특정 커밋의 특정 프로젝트 버전을 저장하는 등의 작업을 수행할 수 있습니다. 첫 번째 커밋을 만들면 *기본 브랜치*가 자동으로 생성됩니다. 이 기본 브랜치는 사용자가 리포지토리를 복제할 때 로컬 리포지토리에서 기본 브랜치로 사용될 브랜치입니다. 기본 브랜치의 이름은 첫 커밋을 만드는 방법에 따라 달라집니다. CodeCommit 콘솔, AWS CLI또는 SDKs 중 하나를 사용하여 리포지토리에 첫 번째 파일을 추가하는 경우 해당 기본 브랜치의 이름이 *기본*입니다. 이 이름이 본 안내서의 예제에 사용된 기본 브랜치 이름입니다. Git 클라이언트를 사용하여 첫 번째 커밋을 푸시하는 경우에는 Git 클라이언트가 기본 브랜치로 지정하는 이름이 기본 브랜치의 이름입니다. 첫 브랜치의 이름으로 main을 사용하도록 Git 클라이언트 구성해 보세요.**

CodeCommit에서는 리포지토리의 기본 브랜치를 변경할 수 있습니다. 브랜치를 생성 및 삭제하고 브랜치에 대한 세부 정보를 볼 수도 있습니다. 브랜치와 기본 브랜치(또는 임의의 두 브랜치) 간의 차이를 빠르게 비교할 수 있습니다. 리포지토리의 브랜치 및 병합 기록을 보려면, 다음 그림에 표시된 [커밋 데이터 시각화 도우미](how-to-view-commit-details.md#how-to-view-commit-details-console-visualizer)를 사용하면 됩니다.

![\[리포지토리 내 브랜치 보기\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-cv-complex1.png)


CodeCommit에서 리포지토리의 다른 측면으로 작업하는 방법에 대해 자세히 알아보려면 [리포지토리 작업](repositories.md), [파일 작업하기](files.md), [풀 요청 작업](pull-requests.md), [커밋 작업](commits.md), [사용자 기본 설정으로 작업](user-preferences.md) 섹션을 참조하세요.

**Topics**
+ [에서 브랜치 생성 AWS CodeCommit](how-to-create-branch.md)
+ [의 브랜치에 대한 푸시 및 병합 제한 AWS CodeCommit](how-to-conditional-branch.md)
+ [에서 브랜치 세부 정보 보기 AWS CodeCommit](how-to-view-branch-details.md)
+ [에서 브랜치 비교 및 병합 AWS CodeCommit](how-to-compare-branches.md)
+ [에서 브랜치 설정 변경 AWS CodeCommit](how-to-change-branch.md)
+ [에서 브랜치 삭제 AWS CodeCommit](how-to-delete-branch.md)

# 에서 브랜치 생성 AWS CodeCommit
<a name="how-to-create-branch"></a>

CodeCommit 콘솔 또는를 사용하여 리포지토리 AWS CLI 에 대한 브랜치를 생성할 수 있습니다. 이렇게 하면 기본 브랜치의 작업에 영향을 주지 않으면서 파일의 새 버전 또는 다른 버전에 대한 작업을 쉽게 분리할 수 있습니다. CodeCommit 콘솔에서 브랜치를 생성한 후 이 변경 내용을 로컬 리포지토리로 풀해야 합니다. 또는 브랜치를 로컬로 생성한 다음 CodeCommit 리포지토리에 연결된 로컬 리포지토리의 Git을 사용하여 해당 변경 내용을 푸시할 수도 있습니다.

**Topics**
+ [브랜치 생성 (콘솔)](#how-to-create-branch-console)
+ [브랜치 생성 (Git)](#how-to-create-branch-git)
+ [브랜치 생성 (AWS CLI)](#how-to-create-branch-cli)

## 브랜치 생성 (콘솔)
<a name="how-to-create-branch-console"></a>

CodeCommit 콘솔을 사용하여 CodeCommit 리포지토리에 브랜치를 생성할 수 있습니다. 사용자는 다음에 리포지토리에서 변경 내용을 풀할 때 새 브랜치를 볼 수 있습니다.

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

1. **리포지토리**에서, 브랜치를 생성하려는 리포지토리의 이름을 선택합니다.

1. 탐색 창에서 **Branches**를 선택합니다.

1. **브랜치 생성**을 선택합니다.  
![\[CodeCommit 콘솔에서 브랜치 생성\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-branches-create.png)

   **브랜치 이름**에 브랜치의 이름을 입력합니다. **브랜치 위치**에서 목록에 있는 브랜치 또는 태그를 선택하거나 커밋 ID를 붙여 넣습니다. **브랜치 생성**을 선택합니다.

## 브랜치 생성 (Git)
<a name="how-to-create-branch-git"></a>

이러한 단계에 따라 로컬 리포지토리에서 Git을 사용하여 로컬 리포지토리에 브랜치를 생성한 다음 이 브랜치를 CodeCommit 리포지토리로 푸시합니다.

이 단계들은 로컬 리포지토리를 이미 CodeCommit 리포지토리에 연결했다는 가정하에 작성되었습니다. 지침은 [리포지토리에 연결](how-to-connect.md) 섹션을 참조하세요.

1. **git checkout -b *new-branch-name*** 명령을 실행하여 로컬 리포지토리에 새 브랜치를 생성합니다. 여기서 *new-branch-name*은 새 브랜치의 이름입니다.

   예를 들어 다음 명령은 로컬 리포지토리에 `MyNewBranch`라는 브랜치를 생성합니다.

   ```
   git checkout -b MyNewBranch
   ```

1. 새 브랜치를 로컬 리포지토리에서 CodeCommit 리포지토리로 푸시하려면 **git push** 명령을 실행하여 ***remote-name*** 및 ***new-branch-name***을 모두 지정합니다.

   예를 들어 로컬 리포지토리의 `MyNewBranch`라는 새 브랜치를 `origin`이라는 별명의 CodeCommit 리포지토리로 푸시하려면 다음을 수행합니다.

   ```
   git push origin MyNewBranch
   ```

**참고**  
`-u` 옵션을 **git push**에 추가하면(예: **git push -u origin main**), 나중에 *remote-name*, *branch-name*을 사용하지 않고 **git push** 를 실행할 수 있습니다. 업스트림 추적 정보가 설정됩니다. 업스트림 추적 정보를 보려면 **git remote show *remote-name***을 실행합니다(예: **git remote show origin**).  
모든 로컬 및 원격 추적 브랜치의 목록을 보려면 **git branch --all**을 실행합니다.  
CodeCommit 리포지토리의 브랜치에 연결된 로컬 리포지토리의 브랜치를 설정하려면 **git checkout *remote-branch-name***을 실행합니다.

다른 옵션들에 대해서는 Git 설명서를 참조하세요.

## 브랜치 생성 (AWS CLI)
<a name="how-to-create-branch-cli"></a>

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

다음 단계에 따라 AWS CLI 를 사용하여 CodeCommit 리포지토리에 브랜치를 생성한 다음 해당 브랜치를 CodeCommit 리포지토리로 푸시합니다. 초기 커밋을 만들고 빈 리포지토리의 기본 브랜치 이름을 지정하는 단계들에 대해서는 [AWS CLI를 사용하여 리포지토리의 첫 번째 커밋 생성](how-to-create-commit.md#create-first-commit)을 참조하세요.

1. 다음을 지정하여 **create-branch** 명령을 실행합니다.
   + 브랜치를 생성할 CodeCommit 리포지토리의 이름(**--repository-name** 옵션 사용).
**참고**  
CodeCommit 리포지토리의 이름을 가져오려면 [list-repositories](how-to-view-repository-details.md#how-to-view-repository-details-no-name-cli) 명령을 실행합니다.
   + 새 브랜치의 이름(**--branch-name** 옵션 사용).
   + 새 브랜치가 가리키는 커밋의 ID(**--commit-id** 옵션 사용).

   예를 들어 `MyDemoRepo`라는 CodeCommit 리포지토리에서 커밋 ID `317f8570EXAMPLE`를 가리키는 `MyNewBranch`라는 브랜치를 생성하려면 다음을 수행합니다.

   ```
   aws codecommit create-branch --repository-name MyDemoRepo --branch-name MyNewBranch --commit-id 317f8570EXAMPLE
   ```

   이 명령은 오류가 있는 경우에만 출력을 생성합니다.

1. 로컬 리포지토리에서 사용 가능한 CodeCommit 리포지토리 브랜치의 목록을 새 원격 브랜치 이름으로 업데이트하려면 **git remote update *remote-name*** 명령을 실행합니다.

   예를 들어 `origin`라는 별명의 CodeCommit 리포지토리에 대하여 사용 가능한 브랜치의 목록을 업데이트하려면 다음을 수행합니다.

   ```
   git remote update origin 
   ```
**참고**  
또는 **git fetch** 명령을 실행할 수 있습니다. 또한 **git branch --all** 명령을 실행하여 모든 원격 브랜치를 볼 수도 있지만, 로컬 리포지토리의 목록을 업데이트할 때까지는 본인이 생성한 원격 브랜치가 목록에 표시되지 않습니다.  
다른 옵션들에 대해서는 Git 설명서를 참조하세요.

1. CodeCommit 리포지토리의 브랜치에 연결된 로컬 리포지토리의 새 브랜치를 설정하려면 **git checkout *remote-branch-name***을 실행합니다.

**참고**  
 CodeCommit 리포지토리 이름의 목록과 그 URL을 가져오려면 **git remote -v** 명령을 실행합니다.

# 의 브랜치에 대한 푸시 및 병합 제한 AWS CodeCommit
<a name="how-to-conditional-branch"></a>

기본적으로 리포지토리에 코드 푸시 권한을 충분히 갖고 있는 모든 CodeCommit 리포지토리 사용자는 그 리포지토리의 모든 브랜치에 기여할 수 있습니다. 콘솔을 사용하거나 명령줄이나 Git를 사용하는 등 어떤 방법으로 리포지토리에 브랜치를 추가하든 상관 없습니다. 단, 일부 리포지토리 사용자만 그 브랜치에 푸시 또는 병합할 수 있도록 브랜치를 구성해야 할 수 있습니다. 예를 들어 선임 개발자의 하위 집합만 그 브랜치에 변경 사항을 푸시 또는 병합할 수 있도록 프로덕션 코드에 사용하는 브랜치를 구성해야 할 수 있습니다. 다른 개발자도 여전히 이 브랜치에서 풀을 사용하고, 브랜치를 생성하며, 풀 요청을 생성할 수 있지만 변경 사항을 푸시하거나 병합할 수는 없습니다. IAM에서 하나 이상의 브랜치에 대하여 컨텍스트 키를 사용하는 조건 정책을 만들어 이 액세스를 구성할 수 있습니다.

**참고**  
이 주제의 일부 절차를 완료하려면 IAM 정책의 구성 및 적용 권한이 충분히 있는 관리자 사용자로 로그인해야 합니다. 자세한 내용은 [IAM 관리자 및 그룹 만들기](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html)를 참조하세요.

**Topics**
+ [브랜치에 대한 푸시 및 병합을 제한하는 IAM 정책 구성](#how-to-conditional-branch-create-policy)
+ [IAM 그룹 또는 역할에 IAM 정책 적용](#how-to-conditional-branch-apply-policy)
+ [정책 테스트](#how-to-conditional-branch-test)

## 브랜치에 대한 푸시 및 병합을 제한하는 IAM 정책 구성
<a name="how-to-conditional-branch-create-policy"></a>

브랜치에 커밋을 푸시하고 풀 요청을 병합하는 작업을 포함한 브랜치 업데이트 작업을 하지 못하도록 IAM에 정책을 만들 수 있습니다. 이를 위하여 조건에 해당하는 경우에만 `Deny` 문의 결과가 적용되도록 정책에서 조건문을 사용합니다. 어떤 작업을 허용하지 않는지는 `Deny` 문에 포함된 API가 결정합니다. Amazon Web Services 계정에서 리포지토리의 한 브랜치에만 적용하도록 하거나 모든 리포지토리에서 기준에 부합하는 모든 브랜치에 적용하도록 정책을 구성할 수 있습니다.<a name="how-to-conditional-branch-create-policy-procedure"></a>

**브랜치에 대한 조건 정책을 생성하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

1. 탐색 창에서 **Policies**를 선택합니다.

1. **정책 생성**을 선택합니다.

1. **JSON**을 선택하고 다음 정책 예시를 붙여 넣습니다. `Resource` 값을 액세스를 제한할 브랜치가 포함된 리포지토리의 ARN으로 대체합니다. `codecommit:References` 값을 액세스를 제한할 브랜치의 참조로 대체합니다. 예를 들어 이 정책은 커밋 푸시, 브랜치 병합, 브랜치 삭제, 풀 요청 병합, `MyDemoRepo`라는 리포지토리의 *`main`*이라는 브랜치 및 `prod`라는 브랜치에 파일 추가하기 등의 작업을 거부합니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": [
                   "codecommit:GitPush",
                   "codecommit:DeleteBranch",
                   "codecommit:DeleteFile",
                   "codecommit:PutFile",
                   "codecommit:MergeBranchesByFastForward",
                   "codecommit:MergeBranchesBySquash",
                   "codecommit:MergeBranchesByThreeWay",
                   "codecommit:MergePullRequestByFastForward",
                   "codecommit:MergePullRequestBySquash",
                   "codecommit:MergePullRequestByThreeWay"
               ],
               "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo",
               "Condition": {
                   "StringEqualsIfExists": {
                       "codecommit:References": [
                           "refs/heads/main", 
                           "refs/heads/prod"
                        ]
                   },
                   "Null": {
                       "codecommit:References": "false"
                   }
               }
           }
       ]
   }
   ```

------

   Git의 브랜치는 HEAD 커밋의 SHA-1 값에 대한 단순한 포인터(참조)인데, 이 때문에 이 조건은 `References`를 사용합니다. `Null` 문은 결과가 `Deny`이고 작업 중 하나가 `GitPush`인 모든 정책에 필요합니다. 이는 로컬 리포지토리에서 CodeCommit으로 변경 사항을 푸시할 때 Git과 `git-receive-pack`이 작업하는 방식 때문입니다.
**작은 정보**  
Amazon Web Services 계정의 모든 리포지토리에서 main이라는 이름의 모든 브랜치에 적용되는 정책을 생성하려면, `Resource` 값을 리포지토리 ARN에서 별표(`*`)로 변경합니다.

1. **정책 검토**를 선택합니다. 정책 문의 오류를 모두 수정하고 **정책 생성**을 계속합니다.

1. JSON이 검증되면 **정책 생성** 페이지가 표시됩니다. **요약** 섹션의 경고는 이 정책이 권한을 허용하지 않음을 알려줍니다. 이는 예상된 동작입니다.
   + **이름**에 **DenyChangesToMain** 등 이 정책의 이름을 입력합니다.
   + **설명**에 정책의 목적에 대한 설명을 입력합니다. 이는 선택 사항이며, 권장 사항은 아닙니다.
   + **정책 생성**을 선택합니다.

## IAM 그룹 또는 역할에 IAM 정책 적용
<a name="how-to-conditional-branch-apply-policy"></a>

지금까지 브랜치에 푸시 및 병합을 제한하는 정책을 만들었지만 IAM 사용자나 그룹, 역할에 적용하기 전까지 이 정책은 아무런 결과가 없습니다. 모범 사례로서 IAM 그룹 또는 역할에 정책을 적용해 보세요. 정책을 개별 IAM 사용자에게 적용해도 잘 확장되지 않습니다.<a name="how-to-conditional-branch-apply-policy-procedure"></a>

**조건 정책을 그룹 또는 역할에 적용하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

1. 정책을 IAM 그룹에 적용하려면 탐색 창에서 **그룹**을 선택합니다. 정책을 사용자가 수임한 역할에 적용하려면 **역할**을 선택합니다. 그룹 또는 역할의 이름을 선택합니다.

1. **권한** 탭에서 **정책 연결**을 선택합니다.

1. 정책 목록에서 만들어 둔 조건 정책을 선택한 다음 **정책 연결**을 선택합니다.

자세한 내용은 [IAM 정책 연결 및 분리](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)를 참조하세요.

## 정책 테스트
<a name="how-to-conditional-branch-test"></a>

그룹 또는 역할에 적용한 정책의 결과를 테스트하여 예상대로 작동하는지 확인해야 합니다. 방법은 다양합니다. 예를 들어 위에 보이는 것과 유사한 정책을 테스트하려면 다음과 같이 합니다.
+ 정책을 적용한 IAM 그룹의 멤버이거나 그 정책이 적용된 역할을 수임한 IAM 사용자로 CodeCommit 콘솔에 로그인합니다. 콘솔에서 제한이 적용된 브랜치에 파일을 추가합니다. 이 브랜치에 파일을 저장하려고 하거나 업로드하려고 시도하면 오류 메시지가 떠야 합니다. 다른 브랜치에 파일을 추가합니다. 작업이 이제 성공합니다.
+ 정책을 적용한 IAM 그룹의 멤버이거나 그 정책이 적용된 역할을 수임한 IAM 사용자로 CodeCommit 콘솔에 로그인합니다. 제한이 적용되는 브랜치에 병합할 풀 요청을 생성합니다. 풀 요청을 만들 수는 있지만 병합을 시도하면 오류가 떠야 합니다.
+ 터미널 또는 명령줄에서 제한이 적용되는 브랜치에 커밋을 생성한 후 CodeCommit 리포지토리에 그 커밋을 푸시합니다. 오류 메시지가 떠야 합니다. 다른 브랜치에서 작업한 커밋과 푸시는 정상으로 작동해야 합니다.

# 에서 브랜치 세부 정보 보기 AWS CodeCommit
<a name="how-to-view-branch-details"></a>

CodeCommit 콘솔을 사용하여 CodeCommit 리포지토리의 브랜치에 대한 세부 정보를 볼 수 있습니다. 브랜치에 마지막으로 커밋한 날짜, 커밋 메시지 등을 볼 수 있습니다. CodeCommit 리포지토리에 연결된 로컬 리포지토리에서 AWS CLI 또는 Git을 사용할 수도 있습니다.

**Topics**
+ [브랜치 세부 정보 보기 (콘솔)](#how-to-view-branch-details-console)
+ [브랜치 세부 정보 보기 (Git)](#how-to-view-branch-details-git)
+ [브랜치 세부 정보 보기 (AWS CLI)](#how-to-view-branch-details-cli)

## 브랜치 세부 정보 보기 (콘솔)
<a name="how-to-view-branch-details-console"></a>

CodeCommit 콘솔을 사용하여 리포지토리의 브랜치 목록과 브랜치에 대한 세부 정보를 빠르게 볼 수 있습니다.

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

1. **리포지토리**에서, 브랜치 세부 정보를 보려는 리포지토리의 이름을 선택합니다.

1. 탐색 창에서 **브랜치**를 선택합니다.  
![\[리포지토리의 브랜치 보기.\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-branches.png)

1. 리포지토리의 기본값으로 사용되는 브랜치의 이름은 **기본 브랜치** 옆에 표시됩니다. 브랜치에 대한 가장 최근 커밋에 대한 세부 정보를 보려면, 브랜치를 선택한 다음 **마지막 커밋 보기**를 선택합니다. 브랜치의 파일과 코드를 보려면 브랜치 이름을 선택합니다.

## 브랜치 세부 정보 보기 (Git)
<a name="how-to-view-branch-details-git"></a>

로컬 리포지토리에서 Git을 사용하여 CodeCommit 리포지토리의 로컬 및 원격 추적 브랜치에 대한 세부 정보를 보려면 **git branch** 명령을 실행합니다.

다음 단계들은 로컬 리포지토리를 이미 CodeCommit 리포지토리에 연결했다는 가정하에 작성되었습니다. 지침은 [리포지토리에 연결](how-to-connect.md) 섹션을 참조하세요.

1. **--all** 옵션을 지정하여 **git branch** 명령을 실행합니다.

   ```
   git branch --all
   ```

1. 이 명령이 제대로 실행되면 다음과 비슷한 출력이 반환됩니다.

   ```
     MyNewBranch
   * main
     remotes/origin/MyNewBranch
     remotes/origin/main
   ```

   별표(`*`)는 현재 설정된 브랜치 옆에 표시됩니다. 그 이후의 항목은 원격 추적 참조입니다.
**작은 정보**  
**git branch**는 로컬 브랜치를 보여 줍니다.  
**git branch -r**은 원격 브랜치를 보여 줍니다.  
**git checkout *existing-branch-name***은 지정된 브랜치 이름으로 전환되며, 그 후에 **git branch**가 즉시 실행되면 그것을 별표(`*`)로 표시합니다.  
**git remote update *remote-name***는 사용 가능한 CodeCommit 리포지토리 브랜치 목록으로 로컬 리포지토리를 업데이트합니다. (CodeCommit 리포지토리 이름의 목록과 그 URL을 가져오려면 **git remote -v** 명령을 실행합니다.)

다른 옵션들에 대해서는 Git 설명서를 참조하세요.

## 브랜치 세부 정보 보기 (AWS CLI)
<a name="how-to-view-branch-details-cli"></a>

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

 AWS CLI 를 사용하여 CodeCommit 리포지토리의 브랜치에 대한 세부 정보를 보려면 다음 명령 중 하나 이상을 실행합니다.
+ 브랜치 이름 목록을 보려면 [list-branches](#how-to-view-branch-details-cli)를 실행합니다.
+ 특정 브랜치에 대한 정보를 보려면 [get-branch](#how-to-view-branch-details-cli-details)를 실행합니다.

### 브랜치 이름 목록을 보려면
<a name="how-to-view-branch-details-cli-list"></a>

1. CodeCommit 리포지토리의 이름을 지정하여 **list-branches** 명령을 실행합니다(`--repository-name` 옵션 사용).
**작은 정보**  
CodeCommit 리포지토리의 이름을 가져오려면 [list-repositories](how-to-view-repository-details.md#how-to-view-repository-details-no-name-cli) 명령을 실행합니다.

   예를 들어, `MyDemoRepo`라는 CodeCommit 리포지토리의 브랜치에 대한 세부 정보를 보려면 다음과 같이 합니다.

   ```
   aws codecommit list-branches --repository-name MyDemoRepo
   ```

1. 성공하면 이 명령은 각 브랜치에 대한 항목이 있는 `branchNameList` 객체를 출력합니다.

   다음은 위 예제 명령의 출력 예입니다.

   ```
   {
       "branches": [
           "MyNewBranch",
           "main"
       ]
   }
   ```

### 커밋에 대한 정보를 보려면
<a name="how-to-view-branch-details-cli-details"></a>

1. 다음을 지정하여 **get-branch** 명령을 실행합니다.
   + 리포지토리 이름(**--repository-name** 옵션 사용).
   + 브랜치 이름(**--branch-name** 옵션 사용).

   예를 들어, `MyDemoRepo`라는 CodeCommit 리포지토리의 `MyNewBranch`라는 브랜치에 대한 정보를 보려면 다음과 같이 합니다.

   ```
   aws codecommit get-branch --repository-name MyDemoRepo --branch-name MyNewBranch
   ```

1. 성공하면 이 명령은 브랜치의 이름과 이 브랜치에 대한 마지막 커밋의 ID를 출력합니다.

   다음은 위 예제 명령의 출력 예입니다.

   ```
   {
       "branch": {
             "branchName": "MyNewBranch",
             "commitID": "317f8570EXAMPLE"
       }
   }
   ```

# 에서 브랜치 비교 및 병합 AWS CodeCommit
<a name="how-to-compare-branches"></a>

CodeCommit 콘솔을 사용하여 CodeCommit 리포지토리의 브랜치를 비교할 수 있습니다. 브랜치를 비교하면 브랜치와 기본 브랜치 간의 차이 또는 두 브랜치 간의 차이를 빠르게 확인할 수 있습니다.

**Topics**
+ [임의의 브랜치와 기본 브랜치 간의 비교](#how-to-compare-branches-default)
+ [두 특정 브랜치 비교](#how-to-compare-branches-two)
+ [두 브랜치 병합 (AWS CLI)](#how-to-merge-branches-cli)

## 임의의 브랜치와 기본 브랜치 간의 비교
<a name="how-to-compare-branches-default"></a>

CodeCommit 콘솔을 사용하여 리포지토리의 기본 브랜치와 다른 브랜치 간의 차이를 빠르게 확인할 수 있습니다.

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

1. **리포지토리**에서, 브랜치를 비교하려는 리포지토리의 이름을 선택합니다.

1. 탐색 창에서 **커밋**을 선택한 다음 **커밋 비교** 탭을 선택합니다.

1. **대상 주소**에서 기본 브랜치의 이름을 선택합니다. **소스**에서 기본 브랜치와 비교할 브랜치를 선택합니다. **비교**를 선택합니다.

## 두 특정 브랜치 비교
<a name="how-to-compare-branches-two"></a>

CodeCommit 콘솔을 사용하여 비교할 두 브랜치 간의 차이를 볼 수 있습니다.

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

1. **리포지토리**에서, 브랜치를 비교하려는 리포지토리의 이름을 선택합니다.

1. 탐색 창에서 **커밋**을 선택한 다음 **커밋 비교** 탭을 선택합니다.

1. **대상 주소**와 **소스**에서 비교할 두 브랜치를 선택한 다음 **비교**를 선택합니다. 구성된 파일 목록을 보려면 변경된 파일 목록을 확장합니다. 변경 내용은 나란히(분할 보기) 또는 일렬(통합 보기)로 표시할 수 있습니다.
**참고**  
IAM 사용자로 로그인한 경우 코드 및 다른 콘솔 설정 보기에 대한 기본 설정을 구성하고 저장할 수 있습니다. 자세한 내용은 [사용자 기본 설정으로 작업](user-preferences.md) 단원을 참조하십시오.  
![\[두 브랜치 간 차이점 약식 보기\]](http://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/images/codecommit-compare-branches.png)

## 두 브랜치 병합 (AWS CLI)
<a name="how-to-merge-branches-cli"></a>

다음 명령 중 하나를 실행하여 사용 가능한 병합 전략 중 하나를 AWS CLI 사용하여 CodeCommit 리포지토리의 두 브랜치를 병합할 수 있습니다.
+ 패스트 포워드 병합 전략을 사용하여 두 브랜치를 병합하려면 [**merge-branches-by-fast-forward**](#merge-branches-by-fast-forward) 명령을 실행합니다.
+ 스쿼시 병합 전략을 사용하여 두 브랜치를 병합하려면 [**merge-branches-by-squash**](#merge-branches-by-squash) 명령을 실행합니다.
+ 3방향 병합 전략을 사용하여 두 브랜치를 병합하려면 [**merge-branches-by-three-way**](#merge-branches-by-three-way) 명령을 실행합니다.

**create-unreferenced-merge-commit** 명령을 실행하여 병합을 테스트할 수도 있습니다. 자세한 내용은 [풀 요청의 충돌 해결](how-to-resolve-conflict-pull-request.md#create-unreferenced-merge-commit)을 참조하세요.

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

**AWS CLI 를 사용하여 CodeCommit 리포지토리에서 두 개의 브랜치를 병합하려면**

1. <a name="merge-branches-by-fast-forward"></a>패스트 포워드 병합 전략을 사용하여 두 브랜치를 병합하려면 **merge-branches-by-fast-forward** 명령을 실행하고 다음을 지정합니다.
   + 병합할 변경 사항을 포함하는 소스 브랜치의 이름(**--source-commit-specifier** 옵션 사용).
   + 변경 사항을 병합할 대상 브랜치의 이름(**--destination-commit-specifier** 옵션 사용).
   + 리포지토리의 이름(**--repository-name** 옵션 사용).

    예를 들어, *bugfix-1234*라는 소스 브랜치를 *MyDemoRepo*라는 리포지토리의 *preprod*라는 대상 브랜치로 통합하려면 다음과 같이 합니다.

   ```
   aws codecommit merge-branches-by-fast-forward --source-commit-specifier bugfix-bug1234 --destination-commit-specifier preprod --repository-name MyDemoRepo
   ```

   이 명령이 제대로 실행되면 다음과 비슷하게 출력됩니다.

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

1. <a name="merge-branches-by-squash"></a>스쿼시 병합 전략을 사용하여 두 브랜치를 병합하려면 **merge-branches-by-squash** 명령을 실행하고 다음을 지정합니다.
   + 병합할 변경 사항을 포함하는 소스 브랜치의 이름(**--source-commit-specifier** 옵션 사용).
   + 변경 사항을 병합할 대상 브랜치의 이름(**--destination-commit-specifier** 옵션 사용).
   + 리포지토리의 이름(**--repository-name** 옵션 사용).
   + 포함시킬 커밋 메시지(**--commit-message** 옵션 사용).
   + 커밋에 사용할 이름(**--name** 옵션 사용).
   + 커밋에 사용할 이메일 주소(**--email** 옵션 사용).

   예를 들어, *bugfix-bug1234*라는 소스 브랜치를 *MyDemoRepo*라는 리포지토리의 *bugfix-quarterly*라는 대상 브랜치로 통합하려면 다음과 같이 합니다.

   ```
   aws codecommit merge-branches-by-squash --source-commit-specifier bugfix-bug1234 --destination-commit-specifier bugfix-quarterly --author-name "Maria Garcia" --email "maria_garcia@example.com" --commit-message "Merging in fix branches to prepare for a general patch." --repository-name MyDemoRepo
   ```

   이 명령이 제대로 실행되면 다음과 비슷하게 출력됩니다.

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

1. <a name="merge-branches-by-three-way"></a>3방향 병합 전략을 사용하여 두 브랜치를 병합하려면 **merge-branches-by-three-way** 명령을 실행하고 다음을 지정합니다.
   + 병합할 변경 사항을 포함하는 소스 브랜치의 이름(**--source-commit-specifier** 옵션 사용).
   + 변경 사항을 병합할 대상 브랜치의 이름(**--destination-commit-specifier** 옵션 사용).
   + 리포지토리의 이름(**--repository-name** 옵션 사용).
   + 포함시킬 커밋 메시지(**--commit-message** 옵션 사용).
   + 커밋에 사용할 이름(**--name** 옵션 사용).
   + 커밋에 사용할 이메일 주소(**--email** 옵션 사용).

   예를 들어, *main*이라는 소스 브랜치를 *MyDemoRepo*라는 리포지토리의 *bugfix-1234*라는 대상 브랜치와 통합하려면 다음과 같이 합니다.

   ```
   aws codecommit merge-branches-by-three-way --source-commit-specifier main --destination-commit-specifier bugfix-bug1234 --author-name "Jorge Souza" --email "jorge_souza@example.com" --commit-message "Merging changes from main to bugfix branch before additional testing."  --repository-name MyDemoRepo
   ```

   이 명령이 제대로 실행되면 다음과 비슷하게 출력됩니다.

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

# 에서 브랜치 설정 변경 AWS CodeCommit
<a name="how-to-change-branch"></a>

 AWS CodeCommit 콘솔 또는에서 기본 브랜치로 사용할 브랜치를 변경할 수 있습니다 AWS CLI. 예를 들어, 기본 브랜치를 master로 설정하는 Git 클라이언트를 사용하여 첫 번째 커밋을 만든 경우, main이라는 브랜치를 생성한 다음, 새 브랜치가 리포지토리의 기본 브랜치로 설정되도록 브랜치 설정을 변경할 수 있습니다.**** 다른 브랜치 설정을 변경하려면 CodeCommit 리포지토리에 연결된 로컬 리포지토리의 Git을 사용할 수 있습니다.

**Topics**
+ [기본 브랜치 변경 (콘솔)](#how-to-change-branch-console)
+ [기본 브랜치 변경 (AWS CLI)](#how-to-change-branch-cli)

## 기본 브랜치 변경 (콘솔)
<a name="how-to-change-branch-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](how-to-create-branch.md) 단원을 참조하십시오.
**기본 브랜치** 섹션 대신 알림 규칙 및 연결 항목이 표시된다면, 현재 콘솔의 일반 설정 메뉴에 있는 것입니다. 리포지토리의 설정 메뉴는 **코드** 및 **풀 요청**과 동일한 수준에 있는 **리포지토리**의 밑에 나열됩니다.

## 기본 브랜치 변경 (AWS CLI)
<a name="how-to-change-branch-cli"></a>

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

 AWS CLI 를 사용하여 CodeCommit 리포지토리에서 리포지토리의 브랜치 설정을 변경하려면 다음 명령을 실행합니다.
+ [update-default-branch](#how-to-change-branch-cli-default) - 기본 브랜치를 변경합니다.

### 기본 브랜치를 변경하려면
<a name="how-to-change-branch-cli-default"></a>

1. 다음을 지정하여 **update-default-branch** 명령을 실행합니다.
   + 기본 브랜치가 업데이트되는 CodeCommit 리포지토리의 이름(**--repository-name** 옵션 사용).
**작은 정보**  
CodeCommit 리포지토리의 이름을 가져오려면 [list-repositories](how-to-view-repository-details.md#how-to-view-repository-details-no-name-cli) 명령을 실행합니다.
   + 새 기본 브랜치의 이름(**--default-branch-name** 옵션 사용).
**작은 정보**  
브랜치 이름을 가져오려면 [list-branches](how-to-view-branch-details.md#how-to-view-branch-details-cli) 명령을 실행합니다.

1. 예를 들어, `MyDemoRepo`라는 CodeCommit 리포지토리에서 기본 브랜치를 `MyNewBranch`로 변경하려면 다음과 같이 합니다.

   ```
   aws codecommit update-default-branch --repository-name MyDemoRepo --default-branch-name MyNewBranch
   ```

   이 명령은 오류가 있는 경우에만 출력을 생성합니다.

다른 옵션들에 대해서는 Git 설명서를 참조하세요.

# 에서 브랜치 삭제 AWS CodeCommit
<a name="how-to-delete-branch"></a>

CodeCommit 콘솔을 사용하여 리포지토리의 브랜치를 삭제할 수 있습니다. CodeCommit에서 브랜치를 삭제해도 로컬 리포지토리에서 해당 브랜치가 삭제되지 않으므로, 사용자는 다음에 변경 사항을 풀할 때까지 해당 브랜치의 복사본을 계속 보유할 수 있습니다. 로컬에서 브랜치를 삭제하고 변경 사항을 CodeCommit 리포지토리로 푸시하려면, CodeCommit 리포지토리에 연결된 로컬 리포지토리에서 Git을 사용합니다.

브랜치를 삭제해도 커밋은 삭제되지 않지만, 해당 브랜치의 커밋에 대한 참조는 모두 삭제됩니다. 리포지토리의 다른 브랜치에 병합되지 않은 커밋이 들어 있는 브랜치를 삭제할 경우, 전체 커밋 ID가 없으면 해당 커밋을 검색할 수 없습니다.

**참고**  
이 주제의 지침을 사용하여 리포지토리의 기본 브랜치를 삭제할 수는 없습니다. 기본 브랜치를 삭제하려면, 브랜치를 하나 만들고 이 새 브랜치를 기본 브랜치로 만든 다음 이전 브랜치를 삭제해야 합니다. 자세한 내용은 [브랜치 생성](how-to-create-branch.md) 및 [브랜치 설정 변경](how-to-change-branch.md) 섹션을 참조하세요.

**Topics**
+ [브랜치 삭제 (콘솔)](#how-to-delete-branch-console)
+ [브랜치 삭제 (AWS CLI)](#how-to-delete-branch-cli)
+ [브랜치 삭제 (Git)](#how-to-delete-branch-git)

## 브랜치 삭제 (콘솔)
<a name="how-to-delete-branch-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. 삭제하려는 브랜치의 이름을 찾아 **브랜치 삭제**를 선택한 다음 선택을 확인합니다.

## 브랜치 삭제 (AWS CLI)
<a name="how-to-delete-branch-cli"></a>

브랜치가 AWS CLI 리포지토리의 기본 브랜치가 아닌 경우를 사용하여 CodeCommit 리포지토리에서 브랜치를 삭제할 수 있습니다. 설치 및 사용에 대한 자세한 내용은 섹션을 AWS CLI참조하세요[명령줄 참조](cmd-ref.md).

1. 터미널 또는 명령줄에서 다음을 지정하여 **delete-branch** 명령을 실행합니다.
   + 브랜치를 삭제할 CodeCommit 리포지토리의 이름(**--repository-name** 옵션 사용).
**작은 정보**  
CodeCommit 리포지토리의 이름을 가져오려면 [list-repositories](how-to-view-repository-details.md#how-to-view-repository-details-no-name-cli) 명령을 실행합니다.
   + 삭제할 브랜치의 이름(**branch-name** 옵션 사용).
**작은 정보**  
브랜치 이름을 가져오려면 [list-branches](how-to-view-branch-details.md#how-to-view-branch-details-cli) 명령을 실행합니다.

1. 예를 들어, `MyDemoRepo`라는 CodeCommit 리포지토리에서 `MyNewBranch`라는 브랜치를 삭제하려면 다음과 같이 합니다.

   ```
   aws codecommit delete-branch --repository-name MyDemoRepo --branch-name MyNewBranch
   ```

   이 명령은 삭제된 브랜치의 이름과 브랜치의 헤드였던 커밋의 전체 커밋 ID를 포함하여 삭제된 브랜치에 대한 정보를 반환합니다. 예제:

   ```
   "deletedBranch": {
       "branchName": "MyNewBranch",
       "commitId": "317f8570EXAMPLE"
   }
   ```

## 브랜치 삭제 (Git)
<a name="how-to-delete-branch-git"></a>

다음 단계에 따라 로컬 리포지토리에서 Git을 사용하여 CodeCommit 리포지토리의 브랜치를 삭제합니다.

이 단계들은 로컬 리포지토리를 이미 CodeCommit 리포지토리에 연결했다는 가정하에 작성되었습니다. 지침은 [리포지토리에 연결](how-to-connect.md) 섹션을 참조하세요.

1. 로컬 리포지토리에서 브랜치를 삭제하려면 **git branch -D *branch-name*** 명령을 실행합니다. 여기서 *branch-name*은 삭제할 브랜치의 이름입니다.
**작은 정보**  
브랜치 이름 목록을 가져오려면 **git branch --all** 명령을 실행합니다.

   예를 들어, `MyNewBranch`라는 로컬 리포지토리에서 브랜치를 삭제하려면 다음을 실행합니다.

   ```
   git branch -D MyNewBranch
   ```

1. CodeCommit 리포지토리에서 브랜치를 삭제하려면 **git push *remote-name* --delete *branch-name*** 명령을 실행합니다. 여기서 *remote-name*은 로컬 리포지토리가 CodeCommit 리포지토리에 사용하는 별명이고, *branch-name*은 CodeCommit 리포지토리에서 삭제할 브랜치의 이름입니다.
**작은 정보**  
CodeCommit 리포지토리 이름의 목록과 그 URL을 가져오려면 **git remote -v** 명령을 실행합니다.

   예를 들어, `origin`라는 CodeCommit 리포지토리에서 `MyNewBranch`라는 브랜치를 삭제하려면 다음과 같이 합니다.

   ```
   git push origin --delete MyNewBranch
   ```
**작은 정보**  
이 명령은 삭제하려는 브랜치가 기본 브랜치인 경우 그 브랜치를 삭제하지 않습니다.

다른 옵션들에 대해서는 Git 설명서를 참조하세요.