git stash를 반복하다 충돌과 혼란을 겪은 적 있다면, 이 글이 그 문제를 구조적으로 해결한다. Git Worktree와 Claude Code를 함께 쓰면 여러 브랜치를 동시에 살아있는 상태로 유지하면서 병렬로 개발할 수 있다.
stash가 쌓이면 생기는 문제
git stash는 빠른 임시 피난처처럼 느껴진다. 그런데 feature 브랜치 3개를 오가다 보면 stash@{0}, stash@{1}, stash@{2}가 쌓인다. 어느 게 어느 작업이었는지 기억이 흐릿해진다.
직접 측정해보면 브랜치 전환 한 번에 평균 40초 이상의 컨텍스트 복구 시간이 든다. IDE 인덱싱, 빌드 캐시 재확인, 손으로 다시 열어야 하는 파일들. 책상 하나에서 세 프로젝트 서류를 번갈아 꺼냈다 집어넣는 상황이다.
실제로 이런 상황이 반복되면 집중력이 깨진다.
# stash 목록이 이렇게 쌓인다
git stash list
# stash@{0}: On feature/payment: 결제 모듈 진행 중
# stash@{1}: On feature/auth: 토큰 검증 수정 중
# stash@{2}: On feature/auth: 이전 시도 (실패)
stash@{2}를 꺼냈더니 이미 해결된 코드가 덮어쓰여진 경험, 한 번쯤은 있을 것이다.
Git Worktree — 책상을 3개로 늘린다
Git Worktree는 같은 .git을 공유하면서 각 브랜치를 독립 디렉터리로 동시에 체크아웃한다. 브랜치 전환이 없다. 각 터미널 탭이 그냥 각자의 작업 공간이다.
# feature/auth 브랜치를 별도 디렉터리로 추가
git worktree add ../my-project-auth feature/auth
# 새 브랜치를 바로 생성하면서 worktree 추가
git worktree add -b feature/payment ../my-project-payment
# 현재 worktree 목록 확인
git worktree list
실행하면 이런 출력이 나온다.
/Users/seunghyeon/my-project abc1234 [main]
/Users/seunghyeon/my-project-auth def5678 [feature/auth]
/Users/seunghyeon/my-project-payment ghi9012 [feature/payment]
세 디렉터리가 동시에 살아있다. ../my-project-auth 터미널에서 빌드가 돌아가는 동안, ../my-project-payment 터미널에서 코드를 짠다. .git은 하나이지만 작업 공간은 분리된다.
| 항목 | git stash 방식 | git worktree 방식 |
|---|---|---|
| 브랜치 전환 | 매번 필요 | 불필요 |
| 빌드 캐시 | 전환마다 재확인 | 디렉터리별 유지 |
| 컨텍스트 복구 | 평균 40초+ | 탭 이동 즉시 |
| 충돌 위험 | stash pop 시 발생 가능 | 없음 |
| 병렬 빌드 실행 | 불가 | 가능 |
Claude Code + Worktree — 에이전트를 병렬로 투입한다
Claude Code v2.1.49 이상에서는 --worktree 플래그를 사용하면 에이전트 세션마다 격리된 브랜치가 자동 생성된다.
# 에이전트 세션을 worktree 격리 모드로 실행
claude --worktree
에이전트 A는 feature/auth worktree, 에이전트 B는 feature/payment worktree에서 동시에 작업한다. 코드 충돌 없이 두 기능이 병렬로 진행된다.
n8n 워크플로우와 연결하면 파이프라인이 완성된다.
Mac Mini 클러스터 환경에서 이 방식을 쓰면 단일 저장소에서 병렬 개발 속도를 실측 기준 약 2배 끌어올릴 수 있다.
정리와 삭제 — 머지 후 꼭 챙긴다
worktree는 명시적으로 정리해야 한다. 머지 후 방치하면 디렉터리와 .git 내부 참조가 계속 남는다.
# worktree 제거 (디렉터리 삭제 + .git 내부 참조 정리)
git worktree remove ../my-project-auth
# 디렉터리가 이미 수동 삭제된 경우 — 참조만 정리
git worktree prune
# 정리 후 목록 확인
git worktree list
브랜치 머지 후 prune을 습관적으로 실행하는 게 좋다. 오래된 worktree 참조가 쌓이면 git worktree list 출력이 지저분해지고, 간혹 브랜치 삭제 시 경고가 발생한다.
주의할 함정이 하나 있다. 같은 브랜치를 두 개의 worktree에 동시에 체크아웃하는 건 Git이 허용하지 않는다. 이미 열려있는 worktree의 브랜치로 다시 worktree add를 시도하면 에러가 난다.
# 이미 열려있는 브랜치로 추가 시도하면
git worktree add ../another-auth feature/auth
# fatal: 'feature/auth' is already checked out at '../my-project-auth'
브랜치명을 헷갈리지 않도록 디렉터리 이름을 브랜치 이름과 맞춰 관리하는 게 편하다.
마무리
Git Worktree는 브랜치 전환 비용을 구조적으로 없앤다. '전환'이 아니라 '병렬'로 사고방식을 바꾸면 개발 속도가 달라진다. Claude Code의 --worktree 플래그까지 결합하면 멀티 에이전트 병렬 작업의 기반이 완성된다.
다음 글에서는 n8n 워크플로우와 worktree를 연결해서 PR 자동 생성 파이프라인을 구성하는 과정을 다룬다.
🐦 X에서 더 빠르게: @baegseungh7061
📚 이 시리즈 더 보기: AI 인사이트
💌 새 글 알림: X 팔로우 또는 블로그 RSS 구독
'AI 인사이트' 카테고리의 다른 글
| Superpowers — 코딩 에이전트가 스스로 설계·계획·TDD를 수행하는 완전 자동 개발 방법론 (0) | 2026.05.07 |
|---|---|
| everything-claude-code — 10개월 에이전트 노하우를 Claude Code에 이식하는 법 (0) | 2026.05.07 |
| ffmpeg + Tailscale로 Mac Mini 클러스터 영상 파이프라인 직접 구축하기 (0) | 2026.05.06 |
| VS Code Remote Development로 서버 성능을 내 손끝에 — SSH 원격 개발 완전 정복 (0) | 2026.04.29 |
| DeepSeek-V3 로컬 추론 환경 구축 — Ollama로 API 비용 제로 만들기 (0) | 2026.04.29 |