git worktree로 여러 브랜치를 동시에 작업하는 방법
개발 중에는 현재 작업을 유지한 채 다른 브랜치에서 긴급 수정이나 리뷰를 해야 할 때가 있습니다. 이때 매번 stash를 하거나 브랜치를 바꾸면 작업 흐름이 끊깁니다. git worktree는 이런 상황에서 매우 유용한 도구입니다.
git worktree란
git worktree는 하나의 Git 저장소에서 여러 작업 디렉터리를 만들고, 각 디렉터리를 서로 다른 브랜치에 연결하는 기능입니다.
즉, 같은 저장소를 공유하면서도 다음처럼 동시에 작업할 수 있습니다.
- 디렉터리 A: 기능 개발 브랜치
- 디렉터리 B: main 브랜치 긴급 수정
- 디렉터리 C: 리뷰용 브랜치 확인
기본 사용법
기존 브랜치를 새 디렉터리에 체크아웃하려면 다음처럼 사용합니다.
git worktree add ../project-main main새 브랜치를 만들면서 worktree를 만들 수도 있습니다.
git worktree add -b feat/new-feature ../project-new-feature main현재 worktree 목록은 다음 명령으로 확인합니다.
git worktree list언제 쓰면 좋은가
git worktree는 다음 상황에서 특히 편합니다.
- 긴 기능 개발 중 main 브랜치에 핫픽스를 해야 할 때
- PR 리뷰를 위해 다른 브랜치를 잠깐 실행해야 할 때
- 여러 실험 브랜치를 동시에 비교해야 할 때
- 브랜치 전환 때문에 빌드 산출물이나 의존성이 계속 바뀌는 것이 번거로울 때
주의할 점
같은 브랜치를 두 worktree에 동시에 체크아웃할 수는 없습니다. 각 worktree는 서로 다른 브랜치를 사용해야 합니다.
또한 node_modules, .env, 빌드 캐시 같은 파일은 worktree마다 별도로 관리됩니다. 그래서 새 worktree를 만든 뒤에는 필요한 환경 파일을 복사하고 의존성을 설치해야 할 수 있습니다.
정리 방법
작업이 끝난 worktree는 제거합니다.
git worktree remove ../project-main이미 디렉터리를 수동으로 지웠다면 참조를 정리합니다.
git worktree prune듀오랩스가 보는 관점
작은 팀이나 1인 개발 환경에서도 병렬 작업은 자주 발생합니다. git worktree를 익혀두면 브랜치 전환 스트레스를 줄이고, 리뷰·핫픽스·실험을 더 안전하게 분리할 수 있습니다.
함께 읽기
- git push 후 자동 검사가 시작되는 이유: Continuous Integration(CI) 입문코드를 수정하고 로컬에서 잘 동작하는 것까지 확인했습니다. 이제 아래처럼 GitHub에 올립니다.
- CodeRabbit, Warp AI, Cursor는 무엇이 다를까AI 개발 도구가 많아지면서 이름은 비슷하지만 역할이 전혀 다른 도구들이 함께 비교됩니다. CodeRabbit, Warp AI, Cursor도 모두 개발자를 돕지만 같은 범주의 제품은 아닙니다.
- 개발 키가 많아질수록: Bitwarden으로 비밀번호와 시크릿을 나누는 법서비스를 운영하다 보면 GitHub 토큰, 데이터베이스 비밀번호, API 키, 배포 인증서, 백업 암호화 키가 빠르게 늘어납니다. 처음에는 비밀번호 관리 앱의 메모나 여러 .env 파일에 저장해도 괜찮아 보이지만, 키가 많아질수록 “무엇이 최신인지”, “개발용인지 운영용인지”, “어디에서 사용 중인지”를 판단하기 어려워…
- HMAC 입문: 서버는 값이 바뀌었다는 사실을 어떻게 알아낼까?웹 서비스를 만들다 보면 이런 값들을 자주 다룹니다.
- AWS 서비스 10개를 3개로 줄이면 무엇이 달라질까?Next.js로 웹 서비스를 만들 때 AWS 서비스를 하나씩 고르면 꽤 긴 목록이 나온다. CDN, API 입구, 함수 실행, PostgreSQL, 인증, 파일 저장, Redis, Queue, 이벤트 예약, 배포 파이프라인이 각각 다른 서비스다.