> ## Documentation Index
> Fetch the complete documentation index at: https://docs.parallelane.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 브랜치

> 브랜치 생성, 이름 변경, 추적 설정, 삭제, 정리

브랜치 관련 작업은 커밋 그래프의 **우클릭** 메뉴와 **저장소(Repository)** 패널의 **로컬 브랜치** 행에 있습니다.

## 브랜치 만들기

기준이 될 커밋을 우클릭하고 **브랜치 만들기…** 를 선택합니다.
**브랜치 이름(Branch name)** 을 입력하고 **만들기(Create)** 를 누릅니다.
**생성 후 Checkout** 토글은 기본으로 켜져 있습니다.

<Frame>
  <img src="https://mintcdn.com/railgit/SdJRWXTrBLj1X7EN/images/history-branch-create.png?fit=max&auto=format&n=SdJRWXTrBLj1X7EN&q=85&s=109ab4e37c502a4d1bc683c085d056fa" alt="기준 커밋에서 새 브랜치를 만드는 다이얼로그, 이름 입력창과 생성 후 Checkout 토글" width="886" height="480" data-path="images/history-branch-create.png" />
</Frame>

## 브랜치 이름 변경

브랜치 배지가 붙은 커밋을 우클릭하고 해당 브랜치 서브메뉴에서 **이름 변경…** 을 선택합니다.
입력창에는 현재 이름이 채워져 있고, 원격에 올라가 있는 브랜치라면 **origin에서도 이름 변경(Also rename on origin)** 토글이 나타납니다(기본 꺼짐).
라벨에는 그 브랜치가 올라가 있는 리모트 이름이 들어갑니다. 두 곳이면 **origin, upstream에서도 이름 변경** 으로 표시됩니다.

<Note>
  * 현재 체크아웃 중인 브랜치도 이름을 바꿀 수 있습니다.
  * 원격 변경은 "새 이름 push → 성공 시 옛 이름 삭제" 순서로 진행됩니다.
  * 원격 전용 브랜치는 이름 변경 대상이 아닙니다.
</Note>

## 추적 브랜치 설정

**추적 브랜치 설정…(Set tracking branch…)** 으로 로컬 브랜치가 어떤 원격 브랜치를 추적할지 고릅니다.
그래프의 브랜치 서브메뉴와 **저장소(Repository)** 패널의 **로컬 브랜치** 행에 있으며, 현재 체크아웃 중인 브랜치에도 쓸 수 있습니다.

* **브랜치(Branch)** 는 읽기 전용으로 표시되는 대상 브랜치입니다.
* **추적 브랜치(Tracking branch)** 는 저장소의 모든 원격 브랜치를 검색해 고르는 목록입니다. **추적 안 함(No tracking branch)** 을 고르면 설정이 해제됩니다.

추적 브랜치는 [ahead/behind 카운트](/ko/remote/push-pull-fetch#aheadbehind-카운트-배지)의 비교 기준이자, 풀과 페치가 리모트를 정할 때 가장 먼저 보는 값입니다.

<Note>
  바뀌는 것은 git 설정뿐입니다. 커밋이 움직이거나 작업 트리 파일이 바뀌지 않습니다.
  실행 취소에는 기록하지 않으며, 같은 다이얼로그를 다시 열어 되돌립니다.
</Note>

<Tip>
  리모트가 둘 이상이면 `origin/main` 과 `upstream/main` 은 이름만 같은 서로 다른 브랜치이고, 잘못 잡힌 추적을 바로잡을 수단은 이 다이얼로그뿐입니다.
  push의 `-u` 는 추적 관계가 없을 때 새로 만들 뿐, 이미 잘못 설정된 것을 고치지는 못합니다.
</Tip>

## Pull Request 만들기

브랜치 서브메뉴에서 **Pull Request 생성…** 을 선택하면 그 브랜치를 head로 하는 GitHub Pull Request를 만듭니다.
이 항목은 github.com 리모트가 있는 저장소에서만 나타납니다.
다이얼로그는 [Pull Request](/ko/remote/pull-request)에서 다룹니다.

## 브랜치 삭제

브랜치 서브메뉴에서 **삭제** 를 선택합니다.
확인 모달의 **origin에서도 삭제(Also delete on origin)** 토글로 라벨에 적힌 리모트의 브랜치까지 지울 수 있습니다.

<Warning>
  현재 체크아웃 중인 브랜치는 삭제할 수 없습니다.

  병합되지 않은 커밋이 남은 브랜치는 Git이 삭제를 거부합니다.
  이때 에러 알림의 **강제 삭제** 버튼을 누르면 확인 없이 곧바로 삭제되며, 다른 브랜치에 없는 커밋은 유실될 수 있습니다.
</Warning>

## 브랜치 정리

기준 브랜치에 이미 머지된 로컬 브랜치를 한 번에 지웁니다.
상단 바의 **정리(Cleanup)** 메뉴에서 **Merge된 브랜치 정리** 를 선택해 엽니다(기본 워크트리에서만 나타납니다).

<Steps>
  <Step title="기준 브랜치 확인">
    **기준 브랜치(Compare against)** 는 저장소의 기본 브랜치, 그것을 찾지 못하면 현재 체크아웃한 브랜치로 자동 선택되며, 드롭다운에서 다른 로컬 브랜치로 바꿀 수 있습니다.
    분리된 HEAD라 자동으로 정하지 못하면 **비교할 기준 브랜치를 선택하세요** 가 표시됩니다.
  </Step>

  <Step title="대상 고르기">
    후보가 이름, 짧은 SHA, **Merge됨** 배지와 함께 이름순으로 나열되고, 처음에는 모두 선택돼 있습니다.
    체크박스로 개별 해제하거나 **전체 선택** 으로 한꺼번에 바꿉니다.
  </Step>

  <Step title="삭제">
    **{개수} 삭제** 를 누르면 선택한 브랜치를 차례로 지웁니다.
    하나가 실패해도 멈추지 않고, 삭제한 개수와 실패한 브랜치를 토스트로 알려 줍니다.
  </Step>
</Steps>

다음 브랜치는 후보에서 빠집니다.

* 기준 브랜치 자신과 현재 체크아웃한 브랜치
* 다른 워크트리가 체크아웃 중인 브랜치: Git이 삭제를 거부합니다
* 기준 브랜치에 머지되지 않은 브랜치: 브랜치 tip이 기준 브랜치와 같거나 그 조상일 때만 머지된 것으로 봅니다

<Note>
  머지 판정은 로컬 커밋 그래프만으로 이뤄집니다. 원격이 없는 저장소에서도 쓸 수 있습니다.
  지우는 대상도 로컬 브랜치뿐이라 원격 브랜치는 그대로 남습니다.
  정리한 결과는 [실행 취소](/ko/basics/discard-undo)로 한 번에 되돌릴 수 있습니다.
</Note>

<Warning>
  후보 목록은 다이얼로그를 열 때와 기준 브랜치를 바꿀 때만 조회합니다.
  그 뒤 대상 브랜치나 기준 브랜치가 움직였다면 그 브랜치는 지우지 않고 건너뛰며, 사유를 토스트로 알려 줍니다.
  다이얼로그를 다시 열어 확인하세요.
</Warning>
