에이전트 워크플로

AI 코딩 에이전트를 위한 Git worktree: 안전한 워크플로.

FluxGit ·

Git worktree는 각 작업에 별도의 체크아웃 파일과 현재 브랜치를 제공하면서 저장소의 객체와 참조를 공유합니다. 여러 에이전트가 같은 작업 디렉터리를 수정하지 않고 병렬 결과를 비교할 수 있습니다.

짧은 답

각 시도에 연결된 worktree 하나, 브랜치 하나, 범위가 좁은 작업 하나를 배정합니다. 두 시도를 같은 기록된 기준 커밋에서 시작하고 Codex, Claude Code, OpenCode, Cursor 또는 지정 디렉터리에서 실행할 수 있는 다른 도구를 각 폴더에서 사용하며, 기본 체크아웃은 리뷰용으로 남깁니다. 비교 전에 결과를 커밋해 검토 가능하게 만드세요.

기준을 충족한 결과를 선택하고 쓰기 프로세스를 멈춘 뒤 대상 체크아웃이 깨끗한지 확인하고 일반 리뷰와 테스트를 거쳐 병합합니다. worktree는 파일 충돌을 줄이지만 보안 샌드박스는 아닙니다. 객체, 대부분의 ref, remote가 공유되고 셸 호스트가 허용한 접근도 유지됩니다.

1. 시도마다 깨끗한 worktree 만들기

기본 체크아웃에서 시작합니다. 깨끗한 상태를 확인하고 의도한 기준을 갱신하거나 검사한 다음 그 커밋을 한 번 기록하고 두 브랜치를 같은 기준에서 만듭니다.

git status --short
git branch --show-current
BASE_COMMIT=$(git rev-parse HEAD)
git worktree add -b agent/task-a ../agent-task-a "$BASE_COMMIT"
git worktree add -b agent/task-b ../agent-task-b "$BASE_COMMIT"
git worktree list

각 도구에 맞는 폴더와 브랜치를 지정합니다. 같은 브랜치를 두 worktree에서 사용하지 말고 작업 A가 작업 B 폴더에 쓰지 않게 하세요. 기준을 기록하면 remote 브랜치가 이동해도 비교를 재현할 수 있습니다.

디렉터리를 나눠도 셸 권한은 제한되지 않습니다. 자격 증명과 호스트 권한을 작업에 필요한 수준으로 줄이고 사람의 통제가 필요한 Git 쓰기에는 별도의 승인 경계를 사용하세요.

2. 동일한 인수 기준 사용하기

두 시도에 같은 작업 설명, 테스트, 제약, 기록된 기준을 제공합니다. 관련 없는 수정을 피하고 각 브랜치에 결과를 커밋하도록 요청하세요. 커밋되지 않은 작업 트리는 비교하기 어렵고 정리 중 잃기 쉽습니다.

리뷰 전에 에이전트를 멈추세요. worktree는 체크아웃 파일을 분리하지만 권한이 넓은 프로세스는 공유 ref를 변경하고 remote에 연결하거나 작업 폴더 밖 파일에 접근할 수 있습니다.

3. 기록된 기준에서 두 결과 비교하기

두 작업 폴더의 상태를 확인하고 각 브랜치를 동일한 기준 커밋과 비교합니다. 로그와 diff 모두 같은 기준을 유지하세요.

git -C ../agent-task-a status --short
git -C ../agent-task-b status --short
git log --oneline "$BASE_COMMIT"..agent/task-a
git log --oneline "$BASE_COMMIT"..agent/task-b
git diff "$BASE_COMMIT" agent/task-a
git diff "$BASE_COMMIT" agent/task-b

동작, 테스트, 변경 파일, 범위를 검토합니다. 완료했다는 사실만으로 병합하지 마세요. 기준을 만족하면서 가장 작고 이해하기 쉬운 변경을 선택합니다.

기본적으로 두 시도를 모두 병합하지 마세요. 유용한 아이디어가 나뉘었다면 검증한 커밋을 선택하거나 깨끗한 통합 브랜치를 만든 뒤 새 결과를 별도로 검토합니다.

4. 선택한 결과를 일반 게이트로 병합하기

깨끗한 기본 체크아웃으로 돌아가 검토된 브랜치 하나를 고르고 저장소의 일반 non-fast-forward 병합 절차를 사용합니다.

CHOSEN_BRANCH=agent/task-a
git status --short
git diff "$BASE_COMMIT" "$CHOSEN_BRANCH"
git merge --no-ff "$CHOSEN_BRANCH"

병합 중에는 에이전트 쓰기를 멈춥니다. 충돌이 나면 중단하고 내용을 검사한 뒤 정상 리뷰 절차로 해결하세요. worktree 흐름이 충돌을 자동으로 선택하게 해서는 안 됩니다.

병합 후, push 전에 저장소 테스트를 실행합니다. worktree는 코드 리뷰, CI, 보호 브랜치, 사람의 승인을 대신하지 않으며 별도 권한을 받은 셸의 push도 막지 않습니다.

5. 강제하지 않고 정리하기

연결된 체크아웃을 제거하기 전에 두 폴더를 검사하고 보존할 변경을 모두 안전하게 남깁니다.

git -C ../agent-task-a status --short
git -C ../agent-task-b status --short
git worktree remove ../agent-task-a
git worktree remove ../agent-task-b
git worktree list
git worktree prune --dry-run

worktree가 깨끗하거나 남은 작업을 의도적으로 버린 경우에만 force 없이 제거합니다. 리뷰가 끝날 때까지 작업 브랜치를 보존하세요. 폴더 제거와 브랜치 삭제는 별도 결정입니다.

관리 항목을 바꾸기 전에 prune을 dry run으로 미리 봅니다. Git이 정상 제거를 거부하면 보호를 우회하지 말고 남은 변경이나 잠금을 조사하세요.

worktree가 분리하는 것과 공유하는 것

worktree별 분리공유되거나 계속 접근 가능
체크아웃 파일, 작업 변경, 로컬 빌드 산출물저장소 객체와 대부분의 ref
현재 브랜치와 worktree별 HEAD/index 상태remote, 자격 증명, 공유 설정
도구가 쓰는 작업 디렉터리권한이 넓은 셸이 밖에서 접근할 수 있는 모든 것

worktree는 파일 병렬 처리, 명확한 diff, 반복 가능한 비교에 사용하세요. 권한, 보호 브랜치, 리뷰, 승인으로 작업 권한을 통제합니다.

호환성은 도구가 선택한 디렉터리에서 작동하고 작업 경계를 지킬 수 있는지에 달려 있습니다. 이 흐름은 그런 도구에 적합하지만 모든 도구가 같은 제어를 제공한다는 증거는 아닙니다.

Git 공식 자료

FluxGit worktree

리뷰 통제를 유지하며 병렬 결과를 비교하세요.

FluxGit은 연결된 worktree와 저장소 상태를 표시하고 변경을 비교할 수 있습니다. 지원되는 에이전트의 Git 쓰기 제안은 데스크톱 승인을 거칩니다. 별도 셸은 호스트가 부여한 접근을 유지합니다.

관련 자료