git worktree를 사용하여 여러 브랜치를 동시에 작업하고, 컨텍스트 스위칭 비용을 줄여 개발 효율을 높이는 방법을 알아봅니다.
개발하다 보면 여러 기능을 동시에 개발해야 하는 경우가 생기는데요. 기존 방식으로는 브랜치를 checkout하고, commit하고, push하는 과정이 번거롭고, 실수라도 하면 코드가 꼬여버리는 경우가 종종 있었어요. 특히 급하게 다른 브랜치로 전환해야 할 때, 현재 작업 중인 내용을 commit하지 않고는 이동할 수 없어 불편했죠.
git worktree는 이러한 문제를 해결해주는 아주 유용한 도구입니다. 하나의 저장소에서 여러 개의 작업 디렉토리를 생성하여 병렬적인 개발이 가능하게 해주거든요. 마치 여러 개의 독립된 개발 환경을 사용하는 것처럼 느껴져요.
| 항목 | 설명 |
|---|---|
| Worktree | git 저장소의 특정 브랜치를 체크아웃하여 작업하는 디렉토리 |
| Head | 현재 Worktree가 가리키는 브랜치 |
| Main Worktree | git 저장소를 처음 clone했을 때 생성되는 기본 Worktree |
| Linked Worktree | Main Worktree에서 생성된 추가적인 Worktree |
[git 저장소] ├── .git (git metadata) ├── main worktree (기본 작업 디렉토리) │ └── ... (파일) ├── linked worktree 1 (추가 작업 디렉토리) │ └── ... (파일) └── linked worktree 2 (또 다른 작업 디렉토리) └── ... (파일)
새로운 브랜치를 기반으로 Worktree를 생성하려면 다음 명령어를 사용합니다.
bash git worktree add
<path>: 새로운 Worktree를 생성할 디렉토리 경로 (예: ../feature-branch)<branch>: Worktree에 체크아웃할 브랜치 (예: feature/my-new-feature)예시:
bash git worktree add ../feature-auth feat/auth
이 명령어는 feat/auth 브랜치를 기반으로 ../feature-auth 디렉토리에 새로운 Worktree를 생성합니다. 이제 해당 디렉토리로 이동하여 작업을 시작할 수 있습니다.
새로 생성된 Worktree 디렉토리로 이동합니다.
bash cd ../feature-auth
이제 이 디렉토리에서 git status, git add, git commit 등의 명령어를 사용하여 독립적으로 작업을 수행할 수 있습니다. 다른 Worktree의 변경사항에 영향을 주지 않으면서 말이죠.
현재 활성화된 Worktree 목록을 확인하려면 다음 명령어를 사용합니다.
bash git worktree list
이 명령어는 각 Worktree의 경로와 Head 브랜치 정보를 보여줍니다.
더 이상 필요하지 않은 Worktree는 다음 명령어로 제거할 수 있습니다.
bash git worktree remove
<path>: 제거할 Worktree의 디렉토리 경로예시:
bash git worktree remove ../feature-auth
주의: Worktree에 변경사항이 있는 경우, 먼저 commit하거나 stash해야 합니다. 강제로 제거하려면 --force 옵션을 사용할 수 있지만, 변경사항이 유실될 수 있으므로 주의해야 합니다.
bash git worktree remove --force ../feature-auth
A: branch는 코드의 분기점을 의미하며, worktree는 해당 branch를 체크아웃하여 실제로 작업하는 디렉토리를 의미합니다. branch는 여러 개를 생성할 수 있지만, 실제로 코드를 수정하고 빌드하려면 해당 branch를 checkout해야 합니다. worktree는 이러한 checkout 과정을 간소화하고, 여러 branch를 동시에 작업할 수 있도록 지원합니다.
A: 각 Worktree는 독립적인 작업 환경을 제공하지만, 결국 하나의 git 저장소를 공유합니다. 따라서, 동시에 여러 Worktree에서 동일한 파일을 수정하는 경우, merge 충돌이 발생할 수 있습니다. 또한, Worktree를 제거할 때, 변경사항이 commit되지 않은 경우 데이터가 유실될 수 있으므로 주의해야 합니다.
git worktree는 병렬 개발 환경을 구축하고, 컨텍스트 스위칭 비용을 줄여 개발 생산성을 향상시키는 데 매우 유용한 도구입니다. 특히 여러 기능을 동시에 개발하거나, 코드 리뷰, 실험적인 개발을 진행할 때 그 효과를 톡톡히 볼 수 있을 거예요. 저도 실제로 사용해보니 예전보다 훨씬 효율적으로 개발할 수 있게 되었어요.
git worktree 사용을 위한 체크리스트:
이제 git worktree를 적극적으로 활용하여 더욱 즐겁고 효율적인 개발 경험을 만들어보세요!
출처: 당신의 AI 개발, 클로드 코드가 망치고 있다? 지금 바로 알아야..., Cursor 사용법 총정리: 팀원에게 설명해주고 정리한 실전..., 컨테이너 격리와 병렬 개발: devcontainer & git worktree
| 충돌 발생 후 (0) | 2026.02.21 |
|---|---|
| 왜 Git Rebase를 사용해야 할까요? (0) | 2026.02.21 |
| git merge를 사용한 경우 (0) | 2026.02.21 |
| GitHub SSH Clone 설정 가이드 (Mac 기준) (0) | 2025.07.08 |