Skip to main content

moai worktree 워크트리

업데이트 2026-08-13 4분 분량 GitHub에서 수정 ↗

moai worktree (별칭 moai wt) 는 병렬 SPEC 개발에 쓰는 Git 워크트리를 관리합니다. 동기화, 완료 처리, 제거, 정리, 레지스트리 복구, 그리고 격리된 에이전트 실행을 감싸는 상태 가드까지 여덟 개의 하위 명령어를 제공합니다.

SPEC 단위 작업을 main 체크아웃에서 동시에 진행하면 서로의 커밋이 꼬이고, 한 세션이 다른 세션의 작업 트리를 실수로 바꾸는 일이 생길 수 있기 때문에, 워크트리는 관리자 에이전트가 안전하게 병렬로 작업하기 위한 물리적 격리 층입니다. 따라서 하네스(harness) 가 Tier L SPEC 을 worktree 분산으로 처리할 때 이 커맨드가 동기화·정리·복구를 책임집니다.

워크트리 진입과 조회는 이 명령어의 일이 아닙니다

moai worktree 는 워크트리를 관리할 뿐, 그 안으로 들어가거나 목록을 보여 주지 않습니다.

하려는 일쓰는 명령어
워크트리 안에서 작업 시작moai cc -w <name> (또는 moai glm -w / moai cg -w)
현재 세션은 두고 새 tmux 창에서 열기moai cc -w <name> --spawn
워크트리 목록 확인git worktree list
워크트리 새로 만들기moai cc -w <name> (.claude/worktrees/<name>/ 자동 생성) 또는 git worktree add

-w 에 짧은 이름을 주면 .claude/worktrees/<name>/ 아래에서 해석되고, 없으면 새로 만들어집니다. 절대 경로를 주면 ~/.moai/worktrees/ 또는 <프로젝트>/.claude/worktrees/ 아래의 기존 워크트리로 다시 들어갑니다. 그 밖의 절대 경로는 거부됩니다.

하위 명령어

명령어설명
moai worktree sync [branch-name]베이스 브랜치의 변경을 워크트리로 반영
moai worktree done <branch-name>브랜치에 딸린 워크트리 제거, 선택적으로 브랜치까지 삭제
moai worktree remove <path>지정한 경로의 워크트리 제거
moai worktree cleanstale 참조 정리, 병합된/버려진 워크트리 정리
moai worktree recover워크트리 레지스트리 복구
moai worktree snapshot작업 트리 상태를 스냅샷으로 캡처
moai worktree verify현재 작업 트리를 스냅샷과 대조
moai worktree restore스냅샷 HEAD 상태로 작업 트리 되돌리기

moai worktree sync

bash
moai worktree sync [branch-name]

브랜치 이름을 주면 그 브랜치의 워크트리를, 생략하면 현재 디렉터리의 워크트리를 동기화합니다.

플래그설명
--base <branch>기준 브랜치 (기본: main)
--strategy <mode>merge (기본) 또는 rebase

moai worktree done

bash
moai worktree done <branch-name>

브랜치 이름은 필수입니다. 해당 브랜치를 쓰는 워크트리를 찾아 제거하고, 원하면 브랜치까지 삭제합니다. 병합은 하지 않습니다 — 베이스 브랜치 병합은 git merge 나 PR 로 따로 끝내세요.

플래그설명
--force미커밋 변경이 있어도 강제 제거
--delete-branch워크트리 제거 후 브랜치 삭제
--auto자동화용 무출력 모드 (예: PR 머지 후 정리). 워크트리를 못 찾아도 오류로 끝내지 않습니다

moai worktree remove

bash
moai worktree remove <path>

인자는 브랜치 이름이 아니라 파일 시스템 경로입니다.

플래그설명
--force미커밋 변경이 있어도 강제 제거

moai worktree clean

bash
moai worktree clean [--merged-only | --stale] [--yes] [--base <branch>]

플래그 없이 실행하면 stale 워크트리 참조만 prune 합니다.

플래그설명
--merged-only브랜치가 베이스에 병합된 워크트리만 제거
--stale잃을 것이 없는 방치된 워크트리를 쓸어 담기 (기본은 미리보기)
--yes--stale 미리보기 대신 실제 제거 수행
--base <branch>--merged-only · --stale 판정 기준 브랜치 (기본: main)

--stale--merged-only 는 함께 쓸 수 없습니다.

–stale 안전 규칙

워크트리는 다음 두 조건을 모두 만족할 때만 제거 대상이 됩니다.

  1. 작업 트리가 깨끗하다 — 미커밋 변경도, untracked 파일도 없다
  2. 브랜치에 베이스를 넘어서는 고유 커밋이 없다

하나라도 어긋나면 그 워크트리는 유지되고, 유지한 이유가 함께 출력됩니다. 브랜치는 절대 삭제하지 않으므로 워크트리 디렉터리가 사라져도 커밋은 브랜치 이름으로 그대로 남습니다. 메인 체크아웃과 명령을 실행 중인 워크트리는 항상 보호 대상입니다.

--stale 은 기본이 미리보기입니다. 실제로 지우려면 --yes 를 붙이세요.

moai worktree recover

bash
moai worktree recover

git worktree repair 로 워크트리 관리 파일을 고친 뒤 stale 참조를 prune 하고, 최종적으로 인식된 워크트리 목록을 출력합니다. 플래그는 없습니다.

moai worktree snapshot

bash
moai worktree snapshot

HEAD, 브랜치, porcelain 상태, .moai/specs/ 아래 untracked 파일을 캡처해 .moai/state/ 에 JSON 으로 기록합니다. 격리된 에이전트를 호출하기 직전에 찍어 두는 용도입니다.

플래그설명
--out <path>스냅샷 저장 경로 (기본: .moai/state/worktree-snapshot-<id>.json)
--agent-name <name>에이전트 이름 기록 (이후 verify 단계에서 참조)

moai worktree verify

bash
moai worktree verify --snapshot <path>

현재 작업 트리를 스냅샷과 대조합니다. --snapshot필수입니다.

플래그설명
--snapshot <path>사전 스냅샷 JSON 경로 (필수)
--agent-response <path>에이전트 응답 JSON — 빈 worktreePath 탐지용
--agent-name <name>divergence · suspect 로그에 기록할 에이전트 이름
종료 코드의미
0clean
1divergence 감지
2suspect (빈 worktreePath)
3둘 다

moai worktree restore

bash
moai worktree restore --snapshot <path>

git restore --source=<스냅샷 HEAD> --staged --worktree :/ 를 실행해 추적 중인 파일을 스냅샷 HEAD 상태로 되돌립니다. untracked 파일은 git 으로 되살릴 수 없어 경로만 나열되며, 직접 다시 만들어야 합니다.

플래그설명
--snapshot <path>스냅샷 JSON 경로 (필수)
--dry-run실행 없이 수행할 git 명령만 출력

예시

bash
# 워크트리 만들면서 바로 들어가기 (.claude/worktrees/feat-auth/)
moai cc -w feat-auth

# 현재 세션은 유지한 채 새 tmux 창에서 GLM 팀원 띄우기
moai cg -w feat-auth --spawn

# 워크트리 목록
git worktree list

# 현재 워크트리를 main 과 동기화 (merge)
moai worktree sync

# 특정 워크트리를 rebase 로 동기화
moai worktree sync feature/SPEC-AUTH-001 --strategy rebase

# 방치된 워크트리 먼저 미리보기, 확인 뒤 실제 제거
moai worktree clean --stale
moai worktree clean --stale --yes

# 병합 끝난 뒤 워크트리 정리 + 브랜치 삭제
moai worktree done feature/SPEC-AUTH-001 --delete-branch

관련 문서