#Claude Code#git worktree#병렬 세션#AI 코딩 워크플로우#멀티 에이전트 협업

Claude Code 병렬 세션 3개 돌리기 — git worktree로 브랜치 충돌 없애는 법

👁 10 조회
Claude Code 병렬 세션 3개 돌리기 — git worktree로 브랜치 충돌 없애는 법 핵심 개념을 담은 커버 이미지
Claude Code 병렬 세션 3개 돌리기 — git worktree로 브랜치 충돌 없애는 법 핵심 개념을 담은 커버 이미지

저는 AI 코딩 에이전트로 블로그 파이프라인을 돌리는데요. 처음엔 세션 하나씩만 열었어요. 근데 작가 에이전트 3명이 각자 다른 글을 동시에 써야 하는 상황이 생겼죠. 같은 레포에서 브랜치 3개를 번갈아 체크아웃하니까 파일이 덮어씌워지고 세션마다 컨텍스트가 꼬였습니다. 이 글을 읽으면 git worktree로 물리 디렉터리를 분리해서 Claude Code 세션을 동시에 여러 개 돌리는 방법을 익힐 수 있어요.

준비물

git 2.5 이상이 필요해요. worktree 명령은 이 버전부터 지원되거든요. 출처는 git worktree 공식 문서입니다. Claude Code 계정도 준비하세요. 세션 동시 실행 제한은 공식 페이지에서 확인하면 됩니다. 기본 레포 하나만 있으면 충분하고요. 이미 작업 중인 프로젝트라면 그대로 쓰면 돼요. 터미널은 3개 이상 열 수 있어야 합니다.

제가 테스트한 환경은 WSL2 Ubuntu 22.04에 git 2.43 버전이었어요. Windows나 macOS도 git만 최신이면 동일하게 작동하더라고요. 특별한 플러그인이나 확장 프로그램은 필요 없습니다.

1단계: 기본 레포에서 worktree 3개 생성

메인 레포 디렉터리에서 다음 명령어를 실행하세요.

git worktree add ../blog-wt-beaver feat/draft-beaver
git worktree add ../blog-wt-fox feat/draft-fox
git worktree add ../blog-wt-wolf feat/draft-wolf

이렇게 입력하면 Preparing worktree (new branch 'feat/draft-beaver') 메시지와 함께 ../blog-wt-beaver 디렉터리가 생성됩니다. 원본 레포 옆에 물리 디렉터리 3개가 만들어지고, 각 디렉터리는 독립 브랜치를 가리켜요.

파일 시스템 레벨로 완전히 분리되니까 체크아웃 충돌이 원천 차단되죠. git clone을 3번 하면 .git 디렉터리가 3개 생겨서 용량이 낭비되는데, worktree는 .git을 공유하면서 작업 트리만 분리합니다. 제 레포는 .git이 400MB인데 clone 3개면 1.2GB, worktree면 그대로 400MB더라고요.

브랜치 이름은 작업 목적에 맞게 지으세요. 저는 feat/draft-beaver 처럼 에이전트별로 구분했는데, 여러분은 feat/ui-redesign, hotfix/login-bug 같은 식으로 바꿔도 됩니다. 핵심은 브랜치마다 다른 이름을 쓰는 거예요.

2단계: 각 worktree에서 Claude Code 세션 시작

2단계: 각 worktree에서 Claude Code 세션 시작
2단계: 각 worktree에서 Claude Code 세션 시작

터미널 3개를 열고 각각 다른 worktree로 이동합니다. 첫 번째 터미널에서는 cd ../blog-wt-beaverclaude -p blog-publisher를 실행하고요. 두 번째 터미널에서는 cd ../blog-wt-fox 후 같은 명령을 돌리세요. 세 번째도 마찬가지로 cd ../blog-wt-wolfclaude -p blog-publisher입니다.

각 터미널에서 claude -p <프로젝트명>을 입력하면 독립적인 Claude Code 세션 3개가 각 브랜치 컨텍스트로 실행돼요. 제가 실제로 돌렸을 때는 beaver 세션이 how-to 초안을 쓰는 동안 fox는 리뷰를 쓰고 wolf는 오피니언을 작성했어요. 각 세션은 자기 브랜치만 보니까 파일 변경이 서로 안 보입니다.

세션마다 메모리와 API 호출이 독립적으로 소비돼요. 저는 동시 3세션을 1시간 돌렸더니 토큰 사용량이 단일 세션 대비 2.7배 늘었거든요. 예산 관리는 필수입니다. 각 세션이 같은 파일을 읽더라도 캐시를 공유하지 않아서 중복 읽기가 발생하더라고요.

3단계: 작업 완료 후 브랜치 병합

각 세션이 커밋을 완료하면 메인 레포로 돌아와서 브랜치를 병합하세요.

cd /path/to/main-repo
git checkout main
git merge feat/draft-beaver
git merge feat/draft-fox
git merge feat/draft-wolf

메인 브랜치에서 git merge <브랜치명>을 3회 실행하면 됩니다. 충돌 없으면 자동 병합되고요. 충돌 시 수동 해결 후 git commit으로 마무리하세요.

제 경우엔 각 작가 에이전트가 runs/2026-06-27/drafts/ 아래 다른 파일명으로 결과를 저장했기 때문에 충돌이 전혀 없었어요. 만약 같은 파일을 건드린다면 병합 시점에 수동 해결이 필요합니다. 병합 순서는 상관없지만, 저는 작업 시작 순서대로 병합했어요.

4단계: 사용 끝난 worktree 정리

4단계: 사용 끝난 worktree 정리
4단계: 사용 끝난 worktree 정리

병합이 끝나면 worktree를 삭제해도 됩니다.

git worktree remove ../blog-wt-beaver
git worktree remove ../blog-wt-fox
git worktree remove ../blog-wt-wolf

디렉터리가 깨끗하게 사라지고, 브랜치는 남아 있으니 나중에 다시 worktree로 꺼낼 수 있어요. 저는 매일 cron으로 파이프라인을 돌리는데, 런마다 worktree 생성→작업→삭제를 반복하고 있습니다. 삭제 전에 커밋되지 않은 변경사항이 있으면 git이 경고를 띄우니까 실수로 날릴 걱정은 없어요.

흔한 실수와 해결법

worktree 경로를 메인 레포 안에 만들면 .gitignore에 안 걸려서 git이 추적하려고 시도해요. ../ 밖에 만들거나 .git/info/exclude에 명시하세요. 저는 이거 몰라서 2시간 삽질했습니다. git status를 찍으니까 worktree 디렉터리 전체가 untracked로 뜨더라고요.

같은 브랜치를 두 worktree에 동시 체크아웃하려고 하면 "already checked out" 에러가 납니다. 브랜치는 한 번에 한 worktree만 점유 가능해요. 세션마다 브랜치를 다르게 만드세요. 저는 처음에 feat/draft 브랜치 하나로 3개 worktree를 만들려다가 막혔거든요.

worktree 안에서 git worktree list 명령을 실행하면 메인 레포 기준 경로로 출력돼서 헷갈립니다. 항상 절대 경로로 확인하거나 메인 레포에서 확인하는 습관을 들이세요. 상대 경로가 섞이면 나중에 정리할 때 어떤 디렉터리가 worktree인지 찾기 어려워요.

마무리

지금 당장 시도해보세요. 메인 레포에서 git worktree add 한 줄이면 시작입니다. 병렬 세션이 필요한 순간은 AI 협업뿐 아니라 핫픽스와 피처 작업을 동시에 진행할 때도 똑같이 유용하더라고요. 저는 이제 브랜치 체크아웃 충돌 걱정 없이 에이전트 3명을 매일 동시에 돌리고 있습니다.

처음 한 번 설정해두면 다음부턴 명령어 3줄로 전체 워크플로우가 돌아가요. 터미널 창 관리만 잘하면 됩니다. 각 세션의 진행 상황을 한눈에 보려면 tmux나 터미네이터 같은 터미널 멀티플렉서를 쓰는 것도 좋아요. 저는 tmux로 화면을 3분할해서 세션별 로그를 실시간으로 확인하거든요.

이 글이 도움이 됐다면 공유해 주세요
X 공유

관련 글