
AI 시대의 병렬 개발에는 Git Worktree가 최적! 브랜치 전환 없이 개발 효율 향상
요약
AI 에이전트와 병렬로 개발하는 환경에서 Git Worktree를 활용해 개발 효율을 높이는 방법을 소개합니다. 하나의 저장소에서 여러 작업 디렉토리를 생성하여 브랜치 전환 없이 독립적인 개발 환경을 구축할 수 있습니다.
핵심 포인트
- Git Worktree를 통해 하나의 저장소에서 여러 작업 디렉토리 생성 가능
- 브랜치 전환(git switch) 및 stash 관리의 번거로움 해결
- AI 에이전트별로 독립된 작업 환경을 제공하여 병렬 개발 최적화
- VS Code 등 IDE를 여러 개 열어 동시에 작업 가능
ChatGPT, Codex, Claude Code, GitHub Copilot 등의 AI 코딩 툴이 보급되면서, AI와 함께 개발하는 것이 당연해졌습니다.
최근에는,
- AI에게 구현을 의뢰하는 동안 다른 기능을 개발한다
- 여러 AI 에이전트에게 서로 다른 Issue를 동시에 의뢰한다
- 리뷰 대기 중인 브랜치를 남겨둔 채 다음 Issue에 착수한다
와 같은 개발 스타일도 드물지 않습니다.
하지만 기존의 Git 운용에서는 브랜치를 빈번하게 전환해야 합니다.
git switch feature/issue-101
# 개발
git switch hotfix/login
...
이러한 운용에서는 다음과 같은 문제가 발생합니다.
- 커밋되지 않은 변경 사항이 있으면 브랜치를 전환할 수 없다
git stash가 늘어나 관리가 번거롭다- VS Code를 여러 개 열어서 작업할 수 없다
- AI 에이전트마다 독립된 개발 환경을 준비할 수 없다
이것들을 해결해 주는 것이 Git Worktree입니다.
Git Worktree는,
1개의 Git Repository에서 여러 개의 작업 디렉토리(Working Directory)를 생성할 수 있는 Git 표준 기능
입니다.
통상적으로는 다음과 같이 1개의 작업 디렉토리만 존재합니다.
working/
└── kabutrack-api/
하지만 Worktree를 이용하면,
working/
├── kabutrack-api/
│ └── develop
...
이와 같이 여러 개의 디렉토리를 생성할 수 있습니다.
각각 별도의 브랜치를 체크아웃(Checkout)한 상태로 작업할 수 있습니다.
공유되는 것은
- Git 히스토리 (Git History)
- 커밋 (Commit)
- 원격 저장소 (Remote Repository)
- 오브젝트 (Objects)
입니다.
즉,
Git Repository는 1개인 채로, 작업 폴더만 여러 개를 갖는
이미지입니다.
예를 들어 2개의 Issue를 동시에 개발한다고 가정해 봅시다.
feature/stock-api
↓
git switch
...
매번 브랜치를 전환해야 합니다.
커밋되지 않은 변경 사항이 있으면
error: Your local changes would be overwritten
라고 뜨기 때문에,
git stash
를 하는 경우도 적지 않습니다.
VS Code①
kabutrack-api
develop
...
각 브랜치를 별도의 폴더로 열 수 있기 때문에,
단 한 번도 git switch를 할 필요가 없습니다.
예를 들어 주식 분석 서비스 Kabutrack을 개발하고 있다고 가정합니다.
AI에게
Stock API를 구현해 주세요
라고 의뢰합니다.
다른 AI에게
차트 화면을 구현해 주세요
또 다른 AI에게
로그인 화면의 버그를 수정해 주세요
라고 의뢰하면,
Worktree①
kabutrack-api
develop
...
각각 독립된 환경에서 AI가 작업할 수 있습니다.
최근의 AI 에이전트(Codex CLI, Claude Code 등)는 현재 디렉토리(Current Directory)를 전제로 코드를 생성하기 때문에, Worktree와의 상성이 매우 좋습니다.
git worktree add ../kabutrack-api-feature-stock feature/stock-api
git worktree add \
-b feature/stock-api \
../kabutrack-api-feature-stock
이것만으로 새로운 작업 디렉토리가 생성됩니다.
git worktree list
예시
/home/user/working/kabutrack-api
develop
/home/user/working/kabutrack-api-feature-stock
...
각각
code kabutrack-api
code kabutrack-api-feature-stock
code kabutrack-api-feature-chart
...
이것뿐입니다.
VS Code를 4개 실행해도 문제없습니다.
Worktree를 이용하면
git branch
결과가
+ feature/chart
+ feature/stock-api
* develop
와 같이 됩니다.
의미는 다음과 같습니다.
| 기호 | 의미 |
|---|---|
* | 현재 Worktree에서 사용 중 |
+ | 다른 Worktree에서 사용 중 |
즉,
+ feature/chart
은
다른 Worktree에서 체크아웃(checked out)되어 있다
라는 의미입니다.
따라서
git branch -d feature/chart
을 실행하면
error: Cannot delete branch 'feature/chart'
checked out at ...
와 같은 에러가 발생합니다.
필요 없게 되었다면
git worktree remove ../kabutrack-api-feature-chart
을 수행한 후
git branch -d feature/chart
로 브랜치를 삭제할 수 있습니다.
확인
git worktree list
삭제
git worktree remove ../kabutrack-api-feature-stock
원격 추적 브랜치 정리
git fetch --prune
머지(merge)된 브랜치 삭제
git branch --merged \
| egrep -v '(^\*|main$|master$|develop$)' \
| xargs -r git branch -d
저는 다음과 같이 관리하고 있습니다.
working/
├── kabutrack-api/
│ develop
...
용도는 다음과 같습니다.
- develop: 최신 코드 확인
- feature: 일반적인 개발
- hotfix: 장애 대응
- experiment: PoC 및 AI 검증
AI 에이전트(AI Agent)마다 담당 디렉토리를 분리함으로써 서로의 작업이 간섭되지 않습니다.
장점
- 브랜치 전환 불필요
git stash가 거의 불필요- VS Code를 여러 개 실행 가능
- AI 에이전트마다 독립된 환경을 준비할 수 있음
- 리뷰 대기 중에도 다음 개발을 시작할 수 있음
- Git 표준 기능이므로 추가 도구 불필요
- 디스크 용량 증가가 적음
단점
- 동일한 브랜치를 여러 Worktree에서 사용할 수 없음
+가 붙은 브랜치는 삭제하거나 이름을 변경할 수 없음 (Worktree를 먼저 삭제한 후 브랜치를 삭제해야 함)
AI 시대의 개발에서는 "AI에게 맡기는 동안 다른 작업을 진행한다", "여러 AI 에이전트에게 병렬로 구현을 의뢰한다"와 같은 병렬 개발이 일반화되고 있습니다.
Git Worktree를 활용하면 브랜치 전환이나 git stash로 고민할 필요 없이, 여러 개발 태스크를 독립된 환경에서 진행할 수 있습니다.
특히 ChatGPT, Codex, Claude Code, GitHub Copilot 등의 AI 도구를 일상적으로 사용하는 개발자에게 매우 추천하는 기능입니다.
Git 표준 기능이므로 추가 도구도 필요 없습니다. 아직 사용해 보지 않으셨다면 꼭 한번 시도해 보세요. 개발 효율이 크게 향상될 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기