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로 정리하는 게 좋다.
동작 흐름
`git worktree add ../path branch-name` → 새 디렉토리에 브랜치 체크아웃
`git worktree list` → 현재 등록된 worktree 확인
각 worktree에서 독립적으로 커밋/빌드/테스트 가능
`git worktree remove ../path` → 작업 종료 후 정리
장점
- ✓ clone 반복보다 빠르고 디스크 절약
- ✓ stash 없이 브랜치 병행 작업
단점
- ✗ 같은 브랜치 동시 체크아웃 불가
- ✗ worktree 남겨두고 잊으면 관리 복잡