AI 인사이트

Git Worktree로 브랜치 전환 없이 병렬 개발하는 법

seunghyeonlab 2026. 5. 1. 11:48

hero

git stash를 반복하다 충돌과 혼란을 겪은 적 있다면, 이 글이 그 문제를 구조적으로 해결한다. Git Worktree와 Claude Code를 함께 쓰면 여러 브랜치를 동시에 살아있는 상태로 유지하면서 병렬로 개발할 수 있다.

전체 작업 흐름 — stash 방식 vs worktree 방식 비교


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}를 꺼냈더니 이미 해결된 코드가 덮어쓰여진 경험, 한 번쯤은 있을 것이다.

stash 충돌 발생 경로


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 시 발생 가능 없음
병렬 빌드 실행 불가 가능

worktree 디렉터리 구조와 .git 공유


Claude Code + Worktree — 에이전트를 병렬로 투입한다

Claude Code v2.1.49 이상에서는 --worktree 플래그를 사용하면 에이전트 세션마다 격리된 브랜치가 자동 생성된다.

# 에이전트 세션을 worktree 격리 모드로 실행
claude --worktree

에이전트 A는 feature/auth worktree, 에이전트 B는 feature/payment worktree에서 동시에 작업한다. 코드 충돌 없이 두 기능이 병렬로 진행된다.

n8n 워크플로우와 연결하면 파이프라인이 완성된다.

Claude Code 멀티 에이전트 병렬 작업 흐름

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 구독