git worktree branch already exists가 나오면 기존 브랜치를 연다

git worktree branch already exists 오류는 기존 브랜치를 지우라는 뜻이 아니다. git worktree add -b 작업브랜치 새폴더에서 fatal: a branch named '작업브랜치' already exists가 나오면 -b를 뺀다. -b는 기존 브랜치를 선택하는 옵션이 아니라 새 브랜치를 만드는 옵션이다. 기존 브랜치가 다른 worktree에서 사용 중이 아니라면 브랜치 이름만 마지막에 적는다.

기존 Git 브랜치에서 나온 선이 새 worktree 폴더로 이어지고 새 브랜치 옵션 -b는 빠진 개념도
git worktree add ../새폴더 작업브랜치

1. 같은 이름의 브랜치가 실제로 있는지 확인한다

저장소 폴더에서 다음 명령을 실행한다.

git show-ref --verify --quiet refs/heads/작업브랜치
echo $?

결과가 0이면 로컬 브랜치가 이미 있다. 이 상태에서 다음 명령을 쓰면 Git은 같은 이름의 새 브랜치를 또 만들려고 한다.

git worktree add -b 작업브랜치 ../새폴더 HEAD

Git 2.38.1에서 직접 실행한 결과는 다음과 같았다.

Preparing worktree (new branch '작업브랜치')
fatal: a branch named '작업브랜치' already exists

여기서 already exists는 기존 브랜치가 망가졌다는 뜻이 아닙니다. -b가 새 브랜치 생성을 요청했는데 이름이 겹쳤다는 뜻이다.

2. 다른 worktree에서 사용 중인지 확인한다

기존 브랜치를 새 폴더에 연결하기 전에 현재 worktree 목록을 봅니다.

git worktree list

출력의 각 줄 끝에 대괄호로 브랜치 이름이 표시된다.

~/project       abc1234 [main]
~/other-task    def5678 [다른브랜치]

작업브랜치가 목록에 없다면 다음 단계로 간다. 이미 목록에 있다면 이번 오류와 별개로, 같은 브랜치를 두 worktree에서 동시에 체크아웃하지 못하는 상태이다. 그 폴더에서 계속 작업하거나 다른 브랜치 이름을 선택해야 한다.

점유 경로가 보이면 브랜치를 사용 중인 worktree 확인 순서로 이동한다.

3. -b를 빼고 기존 브랜치를 연결한다

부모 폴더가 존재하고 새 폴더 경로가 비어 있는지 확인한 뒤 실행한다.

git worktree add ../새폴더 작업브랜치

직접 재현에서는 다음처럼 성공했다.

Preparing worktree (checking out '작업브랜치')
HEAD is now at dafc3d4 base

새 폴더가 어떤 브랜치를 가리키는지도 확인한다.

git -C ../새폴더 branch --show-current

기대 결과는 작업브랜치이다. 마지막으로 전체 목록을 다시 봅니다.

git worktree list

새 경로와 [작업브랜치]가 같은 줄에 있으면 연결이 끝났다.

-B로 바꾸면 왜 위험할 수 있나?

대문자 -B는 단순히 “이미 있으면 사용”하는 옵션이 아니다. Git 공식 문서상 기존 브랜치를 지정한 시작점으로 재설정할 수 있다. 지금 브랜치가 가리키는 커밋을 보존해야 한다면 오류를 피하려고 바로 바꾸지 않는다.

현재 위치를 먼저 확인하려면 다음 명령을 씁니다.

git log -1 --oneline 작업브랜치

기존 브랜치를 그대로 열 목적이면 -B 대신 -b를 뺀 명령이 맞다.

오류 문구가 다르면 여기서 멈춘다

is already checked out at이 나온다

브랜치 이름만 존재하는 상태가 아니라 다른 worktree가 그 브랜치를 사용 중이다. git worktree list에 나온 경로를 열어 계속 작업하거나, 새 브랜치를 만들어야 한다. 사용 중인 worktree를 확인하지 않고 강제로 덮어쓰지 않는다.

새 폴더가 이미 존재한다고 나온다

브랜치보다 경로 문제이다. 폴더 안의 파일을 확인하고 다른 빈 경로를 선택한다. 기존 폴더를 지우는 것으로 시작하면 미저장 파일을 잃을 수 있다.

목록에는 경로가 있는데 실제 폴더가 없다

사라진 폴더의 등록 정보가 남은 경우이다. git worktree prune --dry-run으로 지워질 항목을 먼저 확인한 뒤 별도 정리 절차를 따라야 한다.

이 경우는 stale worktree 등록을 안전하게 정리하는 순서에서 실제 경로 존재 여부와 prune --dry-run 결과를 함께 확인한다.

한 번에 판단하는 순서

  1. git show-ref --verify --quiet refs/heads/작업브랜치로 브랜치 존재를 확인한다.
  2. git worktree list로 다른 worktree의 점유 여부를 확인한다.
  3. 점유되지 않은 기존 브랜치면 git worktree add ../새폴더 작업브랜치를 실행한다.
  4. git -C ../새폴더 branch --show-current로 결과를 확인한다.

핵심은 브랜치 삭제가 아니라 명령의 뜻을 구분하는 것이다. 새 브랜치를 만들 때만 -b를 쓰고, 이미 있는 브랜치를 새 worktree에서 열 때는 브랜치 이름만 전달한다.

자주 묻는 질문

기존 브랜치를 지운 뒤 -b로 다시 만들어도 되나?

다른 worktree의 점유 여부와 브랜치의 현재 커밋을 먼저 확인하지 않았다면 지우지 않는다. 기존 브랜치를 그대로 열 목적이면 -b를 빼는 것으로 충분하다.

-B는 기존 브랜치를 안전하게 재사용하는 옵션인가?

아니다. 지정한 시작점으로 기존 브랜치를 재설정할 수 있으므로, 기존 커밋을 보존할 때는 오류 회피용으로 바꾸지 않는다.

검증 기준

  • 주요 근거: Git 공식 git-worktree 문서
  • 마지막 업데이트일: 2026-09-20
  • 확인 환경: macOS의 비민감 임시 저장소, Git 2.38.1
  • 확인 결과: 기존 브랜치에 -b를 쓴 명령은 exit 255와 already exists를 남겼고, -b를 뺀 명령은 exit 0으로 새 worktree를 만들었다.
  • 한계: GUI 도구가 내부에서 어떤 명령을 실행하는지는 도구와 버전에 따라 달라 이 글에서 단정하지 않는다.

직접 만든 실습 자료와 새 도구 소식

AI 도구로 만든 실습 자료, 달라진 기능과 강의 소식을 준비하고 있습니다. 발송을 시작하면 안내해 드려요. 먼저 확인 메일에서 본인 이메일을 확인해 주세요.

신청하기 전에 첫 소식 미리보기에서 내용과 자료를 확인해 보세요.

질문이나 의견을 남겨주세요

이름을 입력하지 않아도 돼요. ‘깜짝 놀란 올빼미’ 같은 별명이 자동으로 붙어요.