

Amazon CodeCatalyst는 더 이상 신규 고객에게 공개되지 않습니다. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세한 내용은 [CodeCatalyst에서 마이그레이션하는 방법](migration.md) 단원을 참조하십시오.

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

# Amazon CodeCatalyst의 브랜치를 사용하여 소스 코드 작업 구성
<a name="source-branches"></a>

Git에서 브랜치는 커밋에 대한 포인터 또는 참조입니다. 개발 시 작업을 체계적으로 정리할 수 있는 편리한 수단입니다. 브랜치를 사용하면 다른 브랜치의 작업에 영향을 주지 않으면서 파일의 새 버전이나 다른 버전에 대한 작업을 분리할 수 있습니다. 브랜치를 사용하면 새 기능을 개발하고 프로젝트 버전을 저장하는 등의 작업을 수행할 수 있습니다. 소스 리포지토리에서 브랜치에 대한 규칙을 구성하여 브랜치에 대한 특정 작업을 해당 프로젝트의 특정 역할로 제한할 수 있습니다.

Amazon CodeCatalyst의 소스 리포지토리에는 생성 방법에 관계없이 콘텐츠와 기본 브랜치가 있습니다. 연결된 리포지토리에는 기본 브랜치나 콘텐츠가 없을 수도 있지만, 초기화하고 기본 브랜치를 생성하기 전까지는 CodeCatalyst에서 사용할 수 없습니다. 블루프린트를 사용하여 프로젝트를 만들면 CodeCatalyst는 해당 프로젝트의 소스 리포지토리를 생성하며, 여기에는 README.md 파일, 샘플 코드, 워크플로 정의 및 기타 리소스가 포함됩니다. 블루프린트를 사용하지 않고 소스 리포지토리를 만들면 첫 번째 커밋으로 README.md 파일이 추가되고 *기본 브랜치*가 만들어집니다. 이 기본 브랜치의 이름은 *기본*입니다. 이 기본 브랜치는 사용자가 리포지토리를 복제할 때 로컬 리포지토리에서 기본 브랜치로 사용될 브랜치입니다.

**참고**  
기본 브랜치는 삭제할 수 없습니다. 소스 리포지토리에 대해 처음 만든 브랜치가 해당 리포지토리의 기본 브랜치입니다. 또한 검색은 기본 브랜치의 결과만 표시합니다. 다른 브랜치에 있는 코드는 검색할 수 없습니다.

CodeCatalyst에서 리포지토리를 만들면 첫 번째 커밋이 생성되며, 이 커밋에는 README.md 파일이 포함된 *기본 브랜치*가 생성됩니다. 기본 브랜치의 이름은 *main*입니다. 이 이름이 본 안내서의 예시에 사용된 기본 브랜치 이름입니다.

**Topics**
+ [브랜치 생성](source-create-delete-branch.md)
+ [리포지토리의 기본 브랜치 관리](source-branches-default-branch.md)
+ [브랜치 규칙을 사용하여 브랜치에 대한 작업 관리](source-branches-branch-rules.md)
+ [브랜치에 대한 Git 명령](source-branches-git.md)
+ [브랜치 및 세부 정보 보기](source-branches-view.md)
+ [브랜치 삭제](source-branches-delete.md)

# 브랜치 생성
<a name="source-create-delete-branch"></a>

CodeCatalyst 콘솔을 사용하여 CodeCatalyst 리포지토리에 브랜치를 만들 수 있습니다. 생성한 브랜치는 다음에 다른 사용자가 리포지토리에서 변경 내용을 가져올 때 표시됩니다.

**작은 정보**  
코드에서 작업할 개발 환경을 생성하는 과정에서 브랜치를 생성할 수도 있습니다. 자세한 내용은 [개발 환경 생성](devenvironment-create.md) 섹션을 참조하세요.

Git을 사용하여 브랜치를 생성할 수도 있습니다. 자세한 내용은 [브랜치에 대한 공통 Git 명령](source-branches-git.md#source-branches-git-table) 섹션을 참조하세요.

**브랜치를 생성하려면(콘솔)**

1. CodeCatalyst 콘솔에서 소스 리포지토리가 있는 프로젝트로 이동합니다.

1. 프로젝트의 소스 리포지토리 목록에서 리포지토리 이름을 선택합니다. 아니면 탐색 창에서 **코드**를 선택한 다음 **소스 리포지토리**를 선택합니다.

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

1. 리포지토리의 개요 페이지에서 **추가**를 선택한 다음 **브랜치 생성**을 선택합니다.

1. 브랜치의 이름을 입력합니다.

1. 브랜치를 생성할 브랜치를 선택한 다음 **생성**을 선택합니다.

# 리포지토리의 기본 브랜치 관리
<a name="source-branches-default-branch"></a>

Amazon CodeCatalyst에서 어떤 브랜치를 소스 리포지토리의 기본 브랜치로 할지 지정할 수 있습니다. CodeCatalyst의 모든 소스 리포지토리에는 생성 방식에 관계없이 콘텐츠와 기본 브랜치가 있습니다. 블루프린트를 사용하여 프로젝트를 생성하는 경우, 해당 프로젝트에 대해 생성된 소스 리포지토리의 기본 브랜치 이름이 *메인*으로 지정됩니다. 기본 브랜치의 내용은 해당 리포지토리의 개요 페이지에 자동으로 표시됩니다.

**중요**  
CodeCatalyst는 연결된 리포지토리에 대한 기본 브랜치의 변경 사항 감지를 지원하지 않습니다. 연결된 리포지토리의 기본 브랜치를 변경하려면 먼저 CodeCatalyst에서 연결을 해제하고 기본 브랜치를 변경한 다음 다시 연결해야 합니다. 자세한 내용은 [CodeCatalyst에서 GitHub 리포지토리, Bitbucket 리포지토리, GitLab 프로젝트 리포지토리 및 Jira 프로젝트 연결](extensions-link.md) 섹션을 참조하세요.  
리포지토리를 연결하기 전에 항상 최신 버전의 확장 프로그램을 사용하는 것이 좋습니다.

기본 브랜치는 소스 리포지토리의 다른 모든 브랜치와 약간 다르게 처리됩니다. 이름 옆에는 **기본**이라는 특수 레이블이 있습니다. 이 기본 브랜치는 사용자가 리포지토리를 Git 클라이언트로 로컬 컴퓨터로 복제할 때 로컬 리포지토리에서 기본 브랜치로 사용될 브랜치입니다. 또한 워크플로 YAML 파일을 저장하고 문제에 대한 정보를 저장하는 워크플로를 생성할 때 사용되는 기본값입니다. CodeCatalyst에서 검색을 사용하는 경우 리포지토리의 기본 브랜치만 검색됩니다. 기본 브랜치는 프로젝트의 여러 측면에서 기본이므로, 기본 브랜치로 지정된 브랜치는 삭제할 수 없습니다. 그러나 다른 브랜치를 기본 브랜치로 사용하도록 선택할 수 있습니다. 이렇게 하면 이전 기본 브랜치에 적용된 모든 [브랜치 규칙](source-branches-branch-rules.md)이 기본 브랜치로 지정한 브랜치에 자동으로 적용됩니다.

**참고**  
CodeCatalyst 프로젝트에서 소스 리포지토리의 기본 브랜치를 변경하려면 프로젝트 관리자 역할이 있어야 합니다. 이는 연결된 리포지토리에는 적용되지 않습니다.

**리포지토리의 기본 브랜치를 보고 변경하려면**

1. 리포지토리가 있는 프로젝트로 이동합니다.

1. 프로젝트의 소스 리포지토리 목록에서 리포지토리 이름을 선택합니다. 아니면 탐색 창에서 **코드**를 선택한 다음 **소스 리포지토리**를 선택합니다.

   기본 브랜치를 포함하여 설정을 보려는 리포지토리를 선택합니다.

1. 리포지토리의 개요 페이지에서 **추가**를 선택한 다음 **설정 관리**를 선택합니다.

1. **기본 브랜치**에서 기본 브랜치로 지정된 브랜치의 이름은 이름 옆에 **기본**이라는 레이블과 함께 표시됩니다. 이 동일한 레이블이 **브랜치**의 브랜치 목록에서 브랜치 이름 옆에 나타납니다.

1. 기본 브랜치를 변경하려면 **편집**을 선택합니다.
**참고**  
기본 브랜치를 변경하려면 프로젝트에 프로젝트 관리자 역할이 있어야 합니다.

1. 드롭다운 목록에서 기본 브랜치를 만들 브랜치의 이름을 선택한 다음, **저장**을 선택합니다.

# 브랜치 규칙을 사용하여 브랜치에 대한 작업 관리
<a name="source-branches-branch-rules"></a>

브랜치를 생성할 때, 해당 역할에 대한 권한을 기반으로 해당 브랜치에 대한 특정 작업이 허용됩니다. 브랜치 규칙을 구성하여 특정 브랜치에 허용되는 작업을 변경할 수 있습니다. 브랜치 규칙은 사용자가 프로젝트에서 수행하는 역할을 기반으로 합니다. 브랜치에 커밋 푸시와 같은 사전 정의된 일부 작업을 프로젝트에서 특정 역할을 가진 사용자로 제한하도록 선택할 수 있습니다. 이를 통해 특정 작업을 수행할 수 있는 역할을 제한하여 프로젝트의 특정 브랜치를 보호할 수 있습니다. 예를 들어, 프로젝트 **관리자** 역할이 있는 사용자만 해당 브랜치에 병합하거나 푸시하도록 브랜치 규칙을 구성하면, 프로젝트의 다른 역할이 있는 사용자는 해당 브랜치의 코드를 변경할 수 없습니다.

브랜치에 대한 규칙 생성이 미치는 모든 영향을 신중하게 고려해야 합니다. 예를 들어, 브랜치에 대한 푸시를 **프로젝트 관리자** 역할이 있는 사용자만 할 수 있도록 제한하면, **기고자** 역할이 있는 사용자는 해당 브랜치에서 워크플로를 생성하거나 편집할 수 없습니다. 이는 워크플로 YAML이 해당 브랜치에 저장되고 허용된 역할이 아닌 사용자는 YAML에 대한 변경 사항을 커밋하거나 푸시할 수 없기 때문입니다. 가장 좋은 방법은 브랜치 규칙을 생성한 후 테스트하여 의도하지 않은 영향이 나타나지 않는지 확인하는 것입니다. 풀 요청에 대한 승인 규칙과 함께 브랜치 규칙을 사용할 수도 있습니다. 자세한 내용은 [풀 요청을 승인 규칙과 병합하기 위한 요구 사항 관리](source-pull-requests-approval-rules.md) 단원을 참조하십시오.

**참고**  
CodeCatalyst 프로젝트의 소스 리포지토리에 대한 브랜치 규칙을 관리하려면 프로젝트 관리자 역할이 있어야 합니다. 연결된 리포지토리에 대한 브랜치 규칙은 생성할 수 없습니다.  
역할에 대한 기본 권한보다 더 제한적인 브랜치 규칙만 생성할 수 있습니다. 프로젝트에서 사용자의 역할이 허용하는 것보다 더 허용적인 브랜치 규칙은 생성할 수 없습니다. 예를 들어, 검토자 역할이 있는 사용자가 브랜치로 푸시할 수 있도록 허용하는 브랜치 규칙을 생성할 수 없습니다.

소스 리포지토리의 기본 브랜치에 적용되는 브랜치 규칙은 다른 브랜치에 적용되는 브랜치 규칙과 약간 다르게 작동합니다. 기본 브랜치에 적용되는 모든 규칙은 기본 브랜치로 지정한 모든 브랜치에 자동으로 적용됩니다. 이전에 기본 브랜치로 설정된 브랜치는 삭제 방지 기능이 더 이상 없다는 점을 제외하면 기존 규칙이 적용된 상태로 유지됩니다. 이 보호 기능은 현재 기본 브랜치에만 적용됩니다.

브랜치 규칙에는 **표준** 및 **사용자 지정**이라는 두 가지 상태가 있습니다. **표준**은 브랜치에서 허용되는 작업이 브랜치 작업에 대해 CodeCatalyst에서 사용자가 가진 역할에 대한 권한과 일치하는 작업임을 나타냅니다. 어떤 역할에 어떤 권한이 있는지에 대한 자세한 내용은 [사용자 역할로 액세스 권한 부여](ipa-roles.md) 섹션을 참조하세요. **사용자 지정**은 하나 이상의 브랜치 작업에 프로젝트의 사용자 역할이 부여한 기본 권한과 다른 작업을 수행할 수 있는 특정 역할 목록이 있는 작업이 있음을 나타냅니다.

**참고**  
브랜치에 대해 하나 이상의 작업을 제한하는 브랜치 규칙을 생성하면, 프로젝트 관리자 역할이 있는 사용자만 해당 브랜치를 삭제할 수 있도록 **브랜치 삭제** 작업이 자동으로 설정됩니다.

다음 표에는 브랜치에서 이러한 작업을 수행할 수 있는 역할에 대한 작업과 기본 설정이 나열되어 있습니다.


**브랜치 작업 및 역할**  

| **브랜치 작업** |  브랜치 규칙이 적용되지 않을 때 이 작업을 수행할 수 있는 역할  | 
| --- | --- | 
|  브랜치에 병합(풀 요청을 브랜치에 병합하는 것 포함)  |  프로젝트 관리자, 기고자  | 
|  브랜치로 푸시  |  프로젝트 관리자, 기고자  | 
|  브랜치 삭제  |  프로젝트 관리자, 기고자  | 
|  브랜치 삭제(기본 브랜치)  |  허용되지 않음  | 

 브랜치 규칙은 삭제할 수 없지만, 브랜치에서 이 작업을 수행할 수 있는 모든 역할의 작업을 허용하도록 업데이트하여 규칙을 효과적으로 제거할 수 있습니다.

**참고**  
CodeCatalyst 프로젝트의 소스 리포지토리에 대한 브랜치 규칙을 구성하려면 프로젝트 관리자 역할이 있어야 합니다. 이는 연결된 리포지토리에는 적용되지 않습니다. 연결된 리포지토리는 CodeCatalyst의 브랜치 규칙을 지원하지 않습니다.<a name="view-edit-branch-rules"></a>

**리포지토리의 브랜치 규칙을 보고 편집하려면**

1. 리포지토리가 있는 프로젝트로 이동합니다.

1. 프로젝트의 소스 리포지토리 목록에서 리포지토리 이름을 선택합니다. 아니면 탐색 창에서 **코드**를 선택한 다음 **소스 리포지토리**를 선택합니다.

   브랜치 규칙을 보려는 리포지토리를 선택합니다.

1. 리포지토리의 개요 페이지에서 **브랜치**를 선택합니다.

1. **브랜치 규칙** 열에서 리포지토리의 각 브랜치에 대한 규칙 상태를 확인합니다. **표준**은 브랜치 작업 규칙이 소스 리포지토리에서 생성된 모든 브랜치의 기본 규칙이며, 프로젝트의 해당 역할에 부여된 권한과 일치함을 나타냅니다. **사용자 지정**은 하나 이상의 브랜치 작업에 해당 브랜치에 대해 허용되는 하나 이상의 작업을 다른 역할 집합으로 제한하는 규칙이 있음을 나타냅니다.

   브랜치에 대한 브랜치 규칙의 세부 정보를 보려면, 검토하려는 브랜치 옆에 있는 **표준** 또는 **사용자 지정**이라는 단어를 선택합니다.

1. 브랜치 규칙을 생성하거나 변경하려면 **설정 관리**를 선택합니다. 소스 리포지토리의 설정 페이지에 있는 **브랜치 규칙**에서 **편집**을 선택합니다.

1. **Branch name**의 드롭다운 목록에서 규칙을 구성하려는 브랜치의 이름을 선택합니다. 허용되는 각 작업 유형에 대해, 드롭다운 목록에서 해당 작업을 수행하도록 허용할 역할을 선택한 다음, **저장**을 선택합니다.

# 브랜치에 대한 Git 명령
<a name="source-branches-git"></a>

Git을 사용하여 컴퓨터(로컬 리포지토리) 또는 개발 환경에 있는 소스 리포지토리의 복제본에서 브랜치를 생성, 관리 및 삭제한 다음 변경 사항을 CodeCatalyst 소스 리포지토리(원격 리포지토리)에 커밋하고 푸시할 수 있습니다. 예제: 


**브랜치에 대한 공통 Git 명령**  

|  |  | 
| --- |--- |
|  로컬 리포지토리의 모든 브랜치를 나열하며, 현재 브랜치 옆에 별표(`*`)를 표시합니다.  |  `git branch`  | 
|  원격 리포지토리에 있는 모든 기존 브랜치에 대한 정보를 로컬 리포지토리로 가져옵니다.  |  `git fetch`  | 
|  로컬 리포지토리의 브랜치와 로컬 리포지토리의 원격 추적 브랜치를 모두 나열합니다.  |  `git branch -a`  | 
|  로컬 리포지토리의 원격 추적 브랜치만 나열합니다.  |  `git branch -r`  | 
|  지정된 브랜치 이름을 사용하여 로컬 리포지토리에 브랜치를 생성합니다. 이 브랜치는 커밋하고 변경 내용을 푸시할 때까지 원격 리포지토리에 나타나지 않습니다.  |  `git branch branch-name`  | 
|  지정된 브랜치 이름을 사용하여 로컬 리포지토리에 브랜치를 만든 다음 해당 브랜치로 전환합니다.  |  `git checkout -b branch-name`  | 
|  지정된 브랜치 이름을 사용하여 로컬 리포지토리의 다른 브랜치로 전환합니다.  |  `git checkout other-branch-name`  | 
|  원격 리포지토리에 대해 로컬 리포지토리의 지정된 닉네임과 지정된 브랜치 이름을 사용하여 로컬 리포지토리에서 원격 리포지토리로 브랜치를 푸시합니다. 또한 로컬 리포지토리에 있는 브랜치에 대한 업스트림 추적 정보도 설정합니다.  |  `git push -u remote-name branch-name`  | 
|  로컬 리포지토리의 다른 브랜치에서 변경한 내용을 로컬 리포지토리의 현재 브랜치에 병합합니다.  |  `git merge from-other-branch-name`  | 
|  병합되지 않은 작업이 포함되어 있지 않는 한 로컬 리포지토리에서 브랜치를 삭제합니다.  |  `git branch -d branch-name`  | 
|  로컬 리포지토리가 원격 리포지토리에 대해 지정한 닉네임과 지정된 브랜치 이름을 사용하여 원격 리포지토리의 새 브랜치를 삭제합니다. (콜론(`:`) 사용에 주의하세요.) 또는 명령의 일부로 `--delete`를 지정합니다.  | `git push remote-name :branch-name` `git push remote-name --delete branch-name`  | 

자세한 내용은 Git 설명서를 참조하세요.

# 브랜치 및 세부 정보 보기
<a name="source-branches-view"></a>

특정 브랜치에 대한 파일, 폴더 및 가장 최근 커밋을 비롯한 원격 브랜치에 대한 정보를 Amazon CodeCatalyst 콘솔에서 볼 수 있습니다. Git 명령과 로컬 운영 체제를 사용하여 원격 및 로컬 브랜치에 대한 이 정보를 볼 수도 있습니다.<a name="source-branches-view-console"></a>

**브랜치 보기(콘솔)**

1. CodeCatalyst 콘솔에서 브랜치를 보려는 소스 리포지토리가 포함된 프로젝트로 이동합니다. **코드**를 선택하고 **소스 리포지토리**를 선택한 다음 소스 리포지토리를 선택합니다.

1. 프로젝트의 소스 리포지토리 목록에서 리포지토리 이름을 선택합니다. 아니면 탐색 창에서 **코드**를 선택한 다음 **소스 리포지토리**를 선택합니다.

   브랜치를 보려는 리포지토리를 선택합니다.

1. 리포지토리의 기본 브랜치가 표시됩니다. 브랜치에 있는 파일 및 폴더 목록, 가장 최근 커밋에 대한 정보, README.md 파일의 내용(브랜치에 있는 경우)을 볼 수 있습니다. 다른 브랜치에 대한 정보를 보려면 리포지토리의 브랜치 드롭다운 목록에서 해당 브랜치를 선택합니다.

1. 리포지토리의 모든 브랜치를 보려면 **모두 보기**를 선택합니다. 브랜치 페이지에는 각 브랜치의 이름, 가장 최근 커밋 및 규칙에 대한 정보가 표시됩니다.

Git 및 운영 체제를 사용하여 브랜치 및 세부 정보를 보는 방법에 대한 자세한 내용은 Git 설명서 및 운영 체제 설명서, [Common Git commands for branches](source-branches-git.md#source-branches-git-table)를 참조하세요.

# 브랜치 삭제
<a name="source-branches-delete"></a>

브랜치가 더 이상 필요하지 않으면 삭제할 수 있습니다. 예를 들어, 특성이 변경된 브랜치를 기본 브랜치에 병합했는데 해당 특성이 릴리스된 경우, 변경 사항이 이미 기본 브랜치에 포함되어 있으므로 원래 특성이 있는 브랜치를 삭제하고 싶을 수 있습니다. 브랜치 수를 적게 유지하면 사용자가 작업하려는 변경 사항이 포함된 브랜치를 쉽게 찾을 수 있습니다. 브랜치를 삭제하면 사용자가 변경 내용을 가져와 동기화할 때까지 해당 브랜치의 복사본이 로컬 컴퓨터의 리포지토리 복제본에 남아 있습니다.<a name="source-branch-delete"></a>

**브랜치 삭제(콘솔)**

1. 리포지토리가 있는 프로젝트로 이동합니다.

1. 프로젝트의 소스 리포지토리 목록에서 리포지토리 이름을 선택합니다. 아니면 탐색 창에서 **코드**를 선택한 다음 **소스 리포지토리**를 선택합니다.

   브랜치를 삭제할 리포지토리를 선택합니다.

1. 리포지토리 개요 페이지에서 브랜치 이름 옆의 드롭다운 선택기를 선택한 다음 **모두 보기**를 선택합니다.

1. 삭제하려는 브랜치를 선택한 다음 **브랜치 삭제**를 선택합니다.
**참고**  
리포지토리의 기본 브랜치는 삭제할 수 없습니다.

1. 확인 대화 상자가 표시됩니다. 리포지토리, 진행 중인 풀 리퀘스트 수, 브랜치와 관련된 워크플로 수를 보여줍니다.

1. 브랜치 삭제를 확인하려면 텍스트 상자에 **delete**를 입력한 다음 **삭제**를 선택합니다.

Git을 사용하여 브랜치를 삭제할 수도 있습니다. 자세한 내용은 [브랜치에 대한 공통 Git 명령](source-branches-git.md#source-branches-git-table) 섹션을 참조하세요.