



Git Worktree는 하나의 Git 저장소에서 여러 브랜치를 동시에 체크아웃하여 작업할 수 있게 해주는 기능입니다. 각 worktree는 독립적인 작업 디렉토리를 가지며, 동일한 Git 데이터베이스를 공유합니다.
메인 프로젝트 (main 브랜치)
└── worktree/
├── agent-1/ (theme-minimal 브랜치)
├── agent-2/ (theme-neon 브랜치)
├── agent-3/ (theme-nature 브랜치)
└── agent-4/ (theme-luxury 브랜치)
먼저 각 테마를 위한 브랜치를 생성합니다:
# 메인 프로젝트 루트에서 실행
git branch theme-minimal
git branch theme-neon
git branch theme-nature
git branch theme-luxury
참고: 브랜치가 이미 존재한다면 이 단계를 건너뛰세요.
# worktree를 담을 디렉토리 생성
mkdir -p worktree
# agent-1: theme-minimal 브랜치를 위한 worktree 생성
git worktree add worktree/agent-1 theme-minimal
# agent-2: theme-neon 브랜치를 위한 worktree 생성
git worktree add worktree/agent-2 theme-neon
# agent-3: theme-nature 브랜치를 위한 worktree 생성
git worktree add worktree/agent-3 theme-nature
# agent-4: theme-luxury 브랜치를 위한 worktree 생성
git worktree add worktree/agent-4 theme-luxury
git worktree list
출력 예시:
/path/to/project 38358d6 [main]
/path/to/project/worktree/agent-1 38358d6 [theme-minimal]
/path/to/project/worktree/agent-2 38358d6 [theme-neon]
/path/to/project/worktree/agent-3 38358d6 [theme-nature]
/path/to/project/worktree/agent-4 38358d6 [theme-luxury]
각 worktree는 독립적인 node_modules가 필요합니다:
# agent-1 의존성 설치
cd worktree/agent-1
pnpm install
cd ../..
# agent-2 의존성 설치
cd worktree/agent-2
pnpm install
cd ../..
# agent-3 의존성 설치
cd worktree/agent-3
pnpm install
cd ../..
# agent-4 의존성 설치
cd worktree/agent-4
pnpm install
cd ../..
Next.js 개발 서버는 기본적으로 3000 포트를 사용합니다. 여러 개를 동시에 실행하려면 각각 다른 포트를 지정해야 합니다.
각 터미널 창에서 실행:
# 터미널 1: agent-1을 3001 포트로 실행
cd worktree/agent-1
pnpm dev -p 3001
# 터미널 2: agent-2를 3002 포트로 실행
cd worktree/agent-2
pnpm dev -p 3002
# 터미널 3: agent-3을 3003 포트로 실행
cd worktree/agent-3
pnpm dev -p 3003
# 터미널 4: agent-4를 3004 포트로 실행
cd worktree/agent-4
pnpm dev -p 3004
# 터미널 1
cd worktree/agent-1
PORT=3001 pnpm dev
# 터미널 2
cd worktree/agent-2
PORT=3002 pnpm dev
# 터미널 3
cd worktree/agent-3
PORT=3003 pnpm dev
# 터미널 4
cd worktree/agent-4
PORT=3004 pnpm dev
각 worktree의 package.json에 포트별 스크립트 추가:
{
"scripts": {
"dev": "next dev",
"dev:3001": "next dev -p 3001",
"dev:3002": "next dev -p 3002",
"dev:3003": "next dev -p 3003",
"dev:3004": "next dev -p 3004"
}
}
그 다음 실행:
cd worktree/agent-1 && pnpm dev:3001
cd worktree/agent-2 && pnpm dev:3002
cd worktree/agent-3 && pnpm dev:3003
cd worktree/agent-4 && pnpm dev:3004
각 포트로 접속하여 다른 테마를 확인할 수 있습니다:



위와 같이 각 템플릿에 맞게 한번에 확인하고 싶을 때 worktree가 굉장히 유용하다!
git worktree list
git worktree list --porcelain
# worktree 디렉토리 삭제
rm -rf worktree/agent-1
# Git에서 worktree 정보 제거
git worktree prune
# 또는 한 번에 제거
git worktree remove worktree/agent-1
cd worktree/agent-1
cd worktree/agent-1
git status
git branch
4개의 터미널 창을 엽니다
각 터미널에서 다른 worktree의 개발 서버 실행:
# 터미널 1
cd worktree/agent-1 && pnpm dev -p 3001
# 터미널 2
cd worktree/agent-2 && pnpm dev -p 3002
# 터미널 3
cd worktree/agent-3 && pnpm dev -p 3003
# 터미널 4
cd worktree/agent-4 && pnpm dev -p 3004
브라우저에서 4개 탭을 열어 동시 확인:
각 worktree에서 독립적으로 코드 수정:
# agent-1에서 작업
cd worktree/agent-1
# 파일 수정...
git add .
git commit -m "Update minimal theme colors"
# agent-2에서 작업
cd ../agent-2
# 파일 수정...
git add .
git commit -m "Add neon glow effects"
메인 브랜치로 병합:
# 메인 프로젝트로 돌아가기
cd ../..
# theme-minimal 브랜치 병합
git checkout main
git merge theme-minimal
# 다른 브랜치도 필요시 병합
git merge theme-neon
start-all-worktrees.sh 파일을 생성하여 모든 서버를 한 번에 실행:
#!/bin/bash
echo "Starting all worktree development servers..."
# agent-1
cd worktree/agent-1
pnpm dev -p 3001 &
cd ../..
# agent-2
cd worktree/agent-2
pnpm dev -p 3002 &
cd ../..
# agent-3
cd worktree/agent-3
pnpm dev -p 3003 &
cd ../..
# agent-4
cd worktree/agent-4
pnpm dev -p 3004 &
cd ../..
echo "All servers started!"
echo "agent-1: http://localhost:3001"
echo "agent-2: http://localhost:3002"
echo "agent-3: http://localhost:3003"
echo "agent-4: http://localhost:3004"
echo ""
echo "Press Ctrl+C to stop all servers"
# Wait for all background processes
wait
실행 권한 부여 및 실행:
chmod +x start-all-worktrees.sh
./start-all-worktrees.sh
모든 서버 종료:
# Ctrl+C를 누르거나
pkill -f "next dev"
의존성 관리: 각 worktree는 독립적인 node_modules를 가지므로 디스크 공간을 많이 사용합니다.
Git 데이터베이스 공유: 모든 worktree는 동일한 Git 데이터베이스를 공유하므로 한 worktree에서 커밋하면 다른 worktree에서도 해당 커밋을 볼 수 있습니다.
포트 충돌: 항상 다른 포트를 사용해야 합니다. 동일한 포트를 사용하면 "Port already in use" 에러가 발생합니다.
브랜치 체크아웃 제한: 한 브랜치는 한 번에 하나의 worktree에서만 체크아웃할 수 있습니다.
.gitignore: worktree 디렉토리는 .gitignore에 추가하는 것이 좋습니다:
worktree/
code worktree/agent-1theme-*, feature-*).# worktree 잠금 해제
git worktree unlock worktree/agent-1
# worktree 정보 정리
git worktree prune
# 사용 중인 포트 프로세스 확인 (macOS/Linux)
lsof -i :3001
# 프로세스 종료
kill -9 <PID>
Git Worktree를 사용하면 여러 테마나 기능을 동시에 개발하고 비교할 수 있어 개발 효율성이 크게 향상됩니다. 특히 암호화폐 대시보드처럼 여러 디자인 테마를 동시에 작업할 때 매우 유용합니다.