> ## 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.

# 체크아웃

> 브랜치 전환과 자동 fast-forward

체크아웃은 작업 트리를 특정 브랜치·태그·커밋으로 전환하는 작업입니다. ParalleLane에서는 커밋 그래프에서 바로 더블클릭해 전환할 수 있고, 커밋되지 않은 변경이 있으면 처리 방법을 모달에서 고릅니다.

<Frame>
  <img src="https://mintcdn.com/railgit/1HhHpeGsA-i8McQ3/images/history-checkout-dialog.png?fit=max&auto=format&n=1HhHpeGsA-i8McQ3&q=85&s=b5a7da03773e91e911026fd1a4c614e9" alt="브랜치 체크아웃 다이얼로그 — 대상 브랜치와 로컬 변경사항 처리 방법(변경 안 함 / 임시저장 후 복원 / 버리기) 선택" width="886" height="536" data-path="images/history-checkout-dialog.png" />
</Frame>

## 그래프에서 더블클릭 체크아웃

그래프의 행을 더블클릭하면 그 위치로 체크아웃합니다. 무엇을 더블클릭했는지에 따라 대상이 정해집니다.

* **브랜치 배지 더블클릭** → 그 브랜치로 체크아웃(원격 전용 배지는 DWIM으로 동일 이름 로컬 브랜치 체크아웃).
* **태그 배지 더블클릭** → 그 태그로 체크아웃(detached HEAD).
* **커밋 본문 더블클릭** → 우선순위로 대상을 자동 선택합니다. 로컬 `main`/`master` → 그 외 로컬 브랜치(현재 HEAD 우선) → 원격 브랜치 → 태그 순이며, 어느 ref도 없으면 그 커밋 SHA로 **detached 체크아웃** 합니다.

<Note>
  태그나 커밋(SHA)으로 체크아웃하면 저장소가 **detached HEAD** 상태가 됩니다. 한 번 클릭은 선택(상세 보기)만 하고, 전환은 더블클릭에서만 일어납니다.
</Note>

<Warning>
  그래프에 함께 그려지는 **스태시(stash) 노드**는 예외입니다. 더블클릭하면 체크아웃이 아니라 그 스태시를 **즉시 적용**합니다(확인 모달 없음). 삭제까지 고르려면 우클릭 메뉴를 쓰세요 — [스태시](/remote/stash)를 참고하세요.
</Warning>

## 체크아웃 모달 (로컬 변경 처리)

작업 트리가 깨끗하면 모달 없이 즉시 전환합니다. 커밋되지 않은 변경이 있으면 체크아웃 다이얼로그가 떠서 **로컬 변경사항(Local changes)** 처리 방법을 고릅니다.

<CardGroup cols={3}>
  <Card title="변경 안 함 (Don't change)" icon="hand">
    변경을 그대로 두고 전환합니다. 충돌하면 Git이 전환을 막습니다.
  </Card>

  <Card title="임시저장 후 복원 (Stash and reapply)" icon="archive">
    변경을 stash로 저장하고 전환한 뒤 다시 적용합니다. **기본값** 입니다.
  </Card>

  <Card title="버리기 (Discard)" icon="trash-2">
    커밋되지 않은 변경을 폐기하고 전환합니다. 되돌릴 수 없습니다.
  </Card>
</CardGroup>

<Warning>
  **버리기** 는 커밋되지 않은 로컬 변경을 되돌릴 수 없게 폐기합니다. 전환 전에 남길 변경이 없는지 확인하세요.
</Warning>

## 체크아웃 시 자동 fast-forward pull

업스트림을 추적하는 로컬 브랜치로 체크아웃하면, 전환 직후 **백그라운드에서 원격을 fast-forward로 따라잡습니다**. 낡은 로컬 상태를 보지 않도록 해 주는 기능입니다.

* 체크아웃은 즉시 완료되고, pull은 그 뒤에 백그라운드로 실행되어 체감 지연을 늘리지 않습니다.
* fast-forward가 불가능하거나(브랜치가 갈라짐) 네트워크/인증이 실패하면 **브랜치를 건드리지 않고 경고 알림만** 띄웁니다. 머지·리베이스·충돌을 만들지 않습니다.
* 진행 상황은 체크아웃 알림과 이어진 하나의 알림으로 표시됩니다.

이 동작은 기본으로 켜져 있으며, **설정 → ParalleLane → Git** 의 **체크아웃 시 자동 fast-forward** 토글로 끌 수 있습니다. 오프라인이거나 업스트림이 없는 브랜치에서는 아무 것도 하지 않습니다.

<Note>
  **이미 체크아웃한 브랜치의 원격 배지**(예: 현재가 `feature`일 때 `origin/feature` 배지)를 더블클릭하면 전환할 것이 없으므로 체크아웃 대신 같은 fast-forward pull만 실행합니다. 이 경우는 자동 토글과 무관하게 동작합니다.
</Note>

<Tip>
  진짜 머지가 필요한 pull은 이 자동 동작 대신 [푸시 · 풀 · 페치](/remote/push-pull-fetch)의 Pull 다이얼로그를 사용하세요.
</Tip>

## 다른 워크트리가 쓰는 브랜치

체크아웃하려는 브랜치가 **다른 워크트리에 이미 체크아웃돼 있으면** Git은 한 브랜치를 두 워크트리가 동시에 쓰지 못하게 막습니다. 이때 ParalleLane은 빨간 에러 대신 **다른 워크트리로 전환(Switch to another worktree)** 확인 모달을 띄웁니다. 대상 **브랜치(Branch)** 와 그 브랜치를 점유한 **워크트리(Worktree)** 이름을 보여주고, **전환(Switch)** 을 누르면 그 워크트리로 옮겨 갑니다.

현재 워크트리는 전혀 건드리지 않습니다 — 체크아웃이 일어나지 않았으므로 Undo에도 기록되지 않습니다.

<Frame>
  <img src="https://mintcdn.com/railgit/1HhHpeGsA-i8McQ3/images/history-checkout-occupied.png?fit=max&auto=format&n=1HhHpeGsA-i8McQ3&q=85&s=63c779c98daf405ac554b5621ba9a952" alt="대상 브랜치가 다른 워크트리에서 이미 사용 중일 때 뜨는 전환 확인 다이얼로그 — 브랜치와 점유 워크트리 이름, 취소·전환 버튼" width="886" height="500" data-path="images/history-checkout-occupied.png" />
</Frame>

<Note>
  점유 브랜치 처리와 워크트리 전환에 대한 자세한 내용은 [워크트리 고급 활용](/worktrees/advanced)을 참고하세요.
</Note>
