반응형
Claude Code 쓰다 보면 이런 상황이 생겨요.
feature/payment 브랜치에서 결제 API 개발 중...
갑자기 main에서 긴급 버그 리포트 들어옴
→ 하던 작업 stash → 브랜치 변경 → 버그 수정 → 다시 원래로
(컨텍스트 전환 비용 + Claude 세션 날아감)
Git Worktrees는 같은 레포를 여러 폴더에 동시에 체크아웃하는 기능이에요. 브랜치마다 별도 폴더가 생겨서 Claude 세션도 독립적으로 유지돼요.
기존:
하나의 폴더 → 브랜치 전환 → 컨텍스트 날아감
Worktrees:
/myproject (main) ← Claude 세션 A
/myproject-payment (feature/payment) ← Claude 세션 B
/myproject-hotfix (hotfix/login) ← Claude 세션 C
→ 3개 동시에 Claude가 작업 가능
설치 및 기본 설정
Git 기본 기능이라 별도 설치 없어요.
# 현재 상황 확인
git worktree list
# 출력:
# /Users/cell/myproject abc1234 [main]
Worktree 만들기
# 새 브랜치로 worktree 생성
git worktree add ../myproject-payment feature/payment
# 기존 브랜치로 worktree 생성
git worktree add ../myproject-hotfix hotfix/login-bug
# 확인
git worktree list
# /Users/cell/myproject abc1234 [main]
# /Users/cell/myproject-payment def5678 [feature/payment]
# /Users/cell/myproject-hotfix ghi9012 [hotfix/login-bug]
이제 세 폴더가 독립적으로 존재해요. 각 폴더에서 Claude를 따로 실행하면 돼요.
실전 — 3개 작업 동시 진행
터미널 탭 3개 열어요.
탭 1 — 결제 기능 개발
cd ~/myproject-payment
claude
# Claude에게:
"결제 취소 API 만들어줘.
POST /payments/:id/cancel
재고 롤백이랑 환불 처리 포함해서"
탭 2 — 긴급 버그 수정
cd ~/myproject-hotfix
claude
# Claude에게:
"로그인 시 소셜 계정 연동되어 있으면
500 에러 나는 버그 수정해줘.
에러 로그: TypeError: Cannot read property 'provider' of undefined"
탭 3 — main에서 코드 리뷰
cd ~/myproject
claude
# Claude에게:
"/review PR #47 변경사항 리뷰해줘"
세 Claude가 동시에 다른 작업을 해요. 서로 영향 없어요.
CLAUDE.md를 Worktrees에서 공유하기
각 worktree가 같은 레포를 공유하기 때문에 CLAUDE.md도 자동으로 공유돼요.
~/myproject/CLAUDE.md → 모든 worktree에서 읽힘
~/myproject/.claude/commands/ → 모든 worktree에서 사용 가능
~/myproject/.claude/skills/ → 모든 worktree에서 사용 가능
한 번 설정하면 모든 worktree에서 같은 컨벤션이 적용돼요.
실전 시나리오 — 하루 업무 흐름
9:00 결제 기능 개발 시작
cd ~/myproject-payment && claude
"/feature 결제 취소 API"
9:30 긴급 버그 리포트 들어옴
→ 탭 1은 그대로 둠 (Claude 세션 유지)
→ 새 탭에서:
git worktree add ../myproject-hotfix hotfix/payment-null
cd ~/myproject-hotfix && claude
"payment.ts 45번째 줄 null 에러 수정해줘"
9:45 버그 수정 완료
cd ~/myproject-hotfix && /pr
→ PR 자동 생성
9:46 탭 1로 돌아옴
→ Claude 세션 그대로 있음
→ 결제 취소 API 이어서 개발
11:00 결제 기능 완료
/pr → PR 생성
11:01 worktree 정리
git worktree remove ../myproject-hotfix
stash도 없고 브랜치 전환도 없어요. 그냥 탭 전환이에요.
자주 쓰는 명령어
# worktree 목록
git worktree list
# worktree 삭제 (작업 완료 후)
git worktree remove ../myproject-hotfix
# 강제 삭제 (uncommitted changes 있어도)
git worktree remove --force ../myproject-hotfix
# 정리 (삭제된 폴더 참조 제거)
git worktree prune
주의사항
❌ 같은 브랜치를 두 worktree에서 동시에 체크아웃 불가
→ 다른 브랜치여야 함
❌ node_modules는 각 worktree마다 따로 설치 필요
→ cd ~/myproject-payment && pnpm install
✅ .git은 공유 (커밋, 브랜치 전체 공유)
✅ CLAUDE.md, .claude/ 공유
✅ 각 worktree에서 Claude 독립 실행 가능
node_modules 공유하려면 심볼릭 링크 쓰면 돼요.
# node_modules 심볼릭 링크로 공유 (pnpm 기준)
cd ~/myproject-payment
ln -s ../myproject/node_modules ./node_modules
전후 비교
Worktrees 전:
긴급 버그 발생
→ git stash (현재 작업 임시 저장)
→ git checkout main
→ git checkout -b hotfix/bug
→ 버그 수정
→ git checkout feature/payment
→ git stash pop
→ Claude 새 세션 (이전 컨텍스트 없음)
→ 다시 설명하고 이어서 개발
(총 15분 낭비)
Worktrees 후:
긴급 버그 발생
→ 새 탭 열기
→ git worktree add ../myproject-hotfix hotfix/bug
→ cd ~/myproject-hotfix && claude
→ 버그 수정
→ 원래 탭으로 복귀 (Claude 세션 그대로)
(총 30초)
반응형
'AI Development' 카테고리의 다른 글
| Vibe Coding은 끝났다 — Karpathy가 선언한 Agentic Engineering 시대 (1) | 2026.04.14 |
|---|---|
| Claude Code 토큰 낭비 없애는 법 — 컨텍스트 관리 완전 가이드 (0) | 2026.04.14 |
| Claude Code가 스스로 에러 잡게 만드는 법 — Hooks 실전 설정 (0) | 2026.04.13 |
| 매번 설명 반복하다 지쳤다면 — Claude Code 4레이어 컨텍스트 시스템 (1) | 2026.04.13 |
| AI 에이전트에 Shell Access 주면 안 되는 이유 — 실제 해킹 사례와 방어법 (0) | 2026.04.13 |