Claude Code 하나가 일하는 동안 기다리기 아까워 두 번째 터미널을 열어 본 적이 있다면, 같은 파일을 서로 덮어쓰는 문제도 겪어 봤을 겁니다. git worktree로 세션마다 작업 폴더를 나누면 해결됩니다.
근거: Claude Code 문서 Run parallel sessions with worktrees (2026년 11월 2일 확인). 실행 결과는 Claude Code 2.1.316에서 확인했습니다.
켜는 법
claude --worktree add-sub # 또는 claude -w add-sub
claude -w add-mul # 다른 터미널에서, 이름만 다르게
- 저장소 루트의
.claude/worktrees/<이름>/에 작업 폴더가 생기고,worktree-<이름>브랜치가 새로 만들어집니다. - 이름을 빼면 Claude가
bright-running-fox같은 이름을 붙입니다. .claude/worktrees/를.gitignore에 넣어 두면 원래 폴더에 추적 안 된 파일로 보이지 않습니다.- 처음 쓰는 폴더라면
claude를 한 번 그냥 실행해 신뢰 확인을 끝내야--worktree가 동작합니다.
해 봤다
calc.py에 add()만 있는 저장소를 만들고, 두 세션에 같은 파일을 고치게 했습니다. 하나는 sub(), 하나는 mul()을 넣으라고 했습니다.
$ git worktree list
.../wtdemo 5a1ed26 [master]
.../wtdemo/.claude/worktrees/add-mul 5a1ed26 [worktree-add-mul]
.../wtdemo/.claude/worktrees/add-sub 5a1ed26 [worktree-add-sub]
두 세션은 함께 7.4초 만에 끝났고, 각 worktree의 calc.py에는 각자의 함수만 들어갔습니다. 원래 폴더의 calc.py는 그대로였습니다. 이후에는 평소처럼 브랜치를 합치면 됩니다.
함정: .env는 따라오지 않는다
worktree는 새로 꺼낸 작업 폴더라서 git이 무시하는 파일은 없습니다. 이번에도 두 worktree 모두 .env가 없었습니다. 환경 변수가 필요한 테스트나 서버가 안 뜨는 이유가 이것일 때가 많습니다.
프로젝트 루트에 .worktreeinclude를 만들고 .gitignore 문법으로 적으면, 새 worktree를 만들 때마다 복사됩니다.
.env
.env.local
의존성(node_modules, 가상환경)도 새로 설치해야 합니다.
끝낼 때
대화형 세션을 끝내면 Claude가 worktree를 확인합니다. 바뀐 게 없으면 지우고, 작업이 남아 있으면 남길지 지울지 묻습니다. -p로 돌린 세션은 묻지 않으니 직접 정리합니다.
git worktree remove .claude/worktrees/add-sub
오늘 할 일
터미널 두 개를 열고 claude -w 이름으로 이름만 다르게 켜 보세요. 한쪽은 기능, 한쪽은 테스트처럼 겹치지 않는 일을 맡기면 기다리는 시간이 줄어듭니다.