🌲

worktree로 여러 브랜치를 동시에 체크아웃

clone 여러 번 안 해도 된다

기본 Git은 한 clone에 한 브랜치만 체크아웃할 수 있다. 다른 브랜치로 가려면 git checkout으로 전환해야 하고, working tree의 변경은 커밋하거나 stash해야 한다.

worktree의 해법

git worktree add ../other-branch feature-x를 실행하면, 같은 저장소를 참조하는 별도 디렉토리가 만들어지고 거기에 feature-x 브랜치가 체크아웃된다.

이제 디렉토리 두 개가 있다:

  • ./repo — main 브랜치에서 작업 중

  • ../other-branch — feature-x에서 작업 중

둘 다 같은 .git을 공유한다. 커밋은 양쪽에서 즉시 보인다.

언제 쓰면 좋은가

긴 빌드/테스트 중. 한 쪽에서 CI 테스트를 돌리는 동안 다른 쪽에서 다음 작업을 시작할 수 있다.

리뷰와 개발 분리. 리뷰할 PR은 별도 worktree에 체크아웃하고, 자기 작업은 메인 worktree에서 계속한다.

긴급 hotfix. 작업 중인 브랜치를 stash하지 않고 새 worktree에서 hotfix 브랜치를 작업한 뒤 정리한다.

제약

같은 브랜치를 두 worktree에 동시 체크아웃할 수는 없다. submodule 지원은 Git 2.25 이후부터 제대로 동작한다. worktree를 다 쓴 뒤에는 git worktree remove로 정리하는 게 좋다.

동작 흐름

1

`git worktree add ../path branch-name` → 새 디렉토리에 브랜치 체크아웃

2

`git worktree list` → 현재 등록된 worktree 확인

3

각 worktree에서 독립적으로 커밋/빌드/테스트 가능

4

`git worktree remove ../path` → 작업 종료 후 정리

장점

  • clone 반복보다 빠르고 디스크 절약
  • stash 없이 브랜치 병행 작업

단점

  • 같은 브랜치 동시 체크아웃 불가
  • worktree 남겨두고 잊으면 관리 복잡

사용 사례

긴 CI/빌드 병행 작업 PR 리뷰용 별도 체크아웃 긴급 hotfix 대응 AI 에이전트에 worktree별 isolation 제공

참고 자료