git worktree로 여러 브랜치를 동시에 작업하는 방법
작성자 홍서진
듀오랩스 대표·3분 읽기
개발 중에는 현재 작업을 유지한 채 다른 브랜치에서 긴급 수정이나 리뷰를 해야 할 때가 있습니다. 이때 매번 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를 익혀두면 브랜치 전환 스트레스를 줄이고, 리뷰·핫픽스·실험을 더 안전하게 분리할 수 있습니다.
함께 읽기
- Sentry 란 무엇인가: 에러 수집 도구가 하는 일과 대안 비교헬스체크는 200 을 돌려주는데 화면은 500 입니다. 컨테이너는 떠 있고, 워치독은 조용하고, 서버 로그에는 같은 스택 트레이스가 수백 줄 흩어져 있습니다. 어느 배포부터 시작됐는지, 몇 명이 겪었는지, 지금도 나고 있는지는 로그를 아무리 봐도 안 나옵니다.
- cmux와 Orca 비교: 터미널을 늘릴 것인가, 시도를 늘릴 것인가두 앱의 소개 문구는 거의 같습니다. 코딩 에이전트를 여러 개 동시에 돌린다는 것입니다. 그런데 cmux는 Swift와 AppKit으로 짠 macOS 전용 앱이고, Orca는 Electron으로 짜서 Windows와 Linux, 심지어 휴대폰까지 갑니다. 라이선스도 GPL-3.0과 MIT로 갈립니다.
- colima 자동 기동: brew services가 10초마다 재실행되는 이유개발기에 도커를 새로 깔 일이 생겼습니다. 컨테이너 하나만 돌리면 되는 일이라 가볍게 끝날 줄 알았는데, 설치 자체는 5분이었고 그 뒤에 두 가지를 더 고쳐야 했습니다. 하나는 깃 저장소가 더러워진 것이고, 하나는 코어 하나의 2.8%가 계속 타고 있던 것입니다.
- 드라이런과 멱등성: 사고를 막는 시점의 차이배포 스크립트에 안전장치를 넣는다고 할 때 두 가지가 자주 같이 나옵니다.
- 새 맥북 개발 환경 세팅: git clone이 가져오지 않는 것들맥북을 새로 받고 하던 프로젝트를 이어서 하려 했습니다. 리포를 클론하고 npm install 을 돌린 다음 개발 서버를 띄웠는데, 브라우저에 이게 떴습니다.