git worktree list 남은 경로 정리가 필요해도 .git 안의 파일을 직접 삭제하지 마세요. 먼저 목록에서 경로·이동·외장 디스크·잠금을 확인합니다. 방금 없앤 경로라면 기본 만료 유예 때문에 일반 dry-run에 안 나올 수 있습니다. 정말 버린 폴더만 남았다고 확인한 뒤 --expire now dry-run으로 즉시 정리 대상을 보고, 표시된 모든 경로가 폐기 대상일 때만 실제 prune을 실행합니다.

실제 Codex App 화면이 아니라, 사라진 경로를 확인한 뒤 정리와 복구를 나누는 순서를 설명한 개념도입니다.
목차
먼저 목록과 dry-run을 확인하세요
이 작업은 Codex 웹사이트가 아니라 Mac의 터미널에서 합니다. Command + Space를 누르고 터미널을 입력해 연 뒤, cd와 한 칸을 입력하고 Codex에서 사용한 원본 프로젝트 폴더를 창에 끌어 놓습니다. Enter를 누른 다음 아래 명령을 실행합니다.
git worktree list --porcelain
git worktree prune --dry-run --verbose
첫 명령은 등록된 worktree 경로와 브랜치를 보여 줍니다. 두 번째 명령은 기본 만료 기준을 지난 항목 중 제거할 메타데이터만 미리 보여 줍니다. 아무것도 출력되지 않아도 방금 사라진 경로가 정상이라는 뜻은 아닙니다. 기본 만료 유예 안에 있으면 아직 표시되지 않을 수 있습니다.
fatal: not a git repository가 나오면 저장소 바깥에서 실행한 것입니다. Codex에서 연 프로젝트의 Git 루트 폴더를 터미널에 다시 끌어 놓고 실행하세요.
출력에 따라 다음 행동을 고르세요
| 확인한 상태 | 다음 행동 | 지금 하지 말 것 |
|---|---|---|
| 경로가 실제로 존재하고 작업이 남아 있음 | 해당 폴더를 열어 변경사항을 확인하고 그곳에서 계속 작업 | prune 또는 폴더 강제 삭제 |
| 경로를 의도적으로 버렸고 일반 dry-run에 제거 대상으로 표시됨 | 출력 경로를 다시 확인한 뒤 git worktree prune --verbose 실행 |
.git/worktrees 직접 편집 |
| 방금 버린 경로라 일반 dry-run에는 안 보임 | 이동·오프라인 경로가 없음을 확인한 뒤 --expire now dry-run으로 모든 후보 확인 |
dry-run 없이 --expire now 실행 |
| 폴더를 다른 위치로 옮김 | 새 경로에서 git worktree repair로 연결 복구 |
예전 등록을 먼저 prune |
| 외장 디스크·네트워크 경로가 잠시 연결되지 않음 | 디스크나 공유를 다시 연결하고 목록 재확인 | 오프라인 경로를 stale로 단정 |
locked와 이유가 표시됨 |
잠금 이유와 저장 위치를 확인한 뒤 유지 여부 결정 | 이유를 읽지 않고 unlock·prune |
정말 버린 경로만 정리하세요
일반 dry-run에 예상한 경로가 정확히 표시되고, 그 폴더를 옮긴 것이 아니며 다시 연결할 저장장치에도 없다는 점을 확인했다면 실제 정리를 실행합니다.
git worktree prune --verbose
git worktree list --porcelain
두 번째 목록에서 예전 경로가 사라졌는지 확인합니다. prune은 누락된 working tree의 관리 정보를 정리하는 명령입니다. 새 파일을 만들거나 기존 브랜치를 자동으로 합치는 명령이 아닙니다.
방금 없앤 경로라 일반 dry-run에 나오지 않으면 바로 실제 prune을 반복하지 마세요. 먼저 목록의 모든 worktree가 실제 폐기 대상인지 확인한 뒤 아래처럼 즉시 만료 조건도 dry-run부터 적용합니다.
git worktree prune --expire now --dry-run --verbose
이 명령은 특정 경로 하나가 아니라 즉시 만료 대상으로 판단되는 여러 관리 항목을 함께 보여 줄 수 있습니다. 출력된 모든 경로가 옮긴 폴더나 잠시 끊긴 저장장치가 아니라 정말 버린 항목임을 확인했을 때만 같은 조건으로 실제 정리를 실행합니다.
git worktree prune --expire now --verbose
git worktree list --porcelain
2026-09-19에 비민감 임시 저장소에서 linked worktree 폴더의 등록 경로가 사라진 상태를 만들었습니다. Git 2.38.1의 목록에는 다음처럼 prunable 이유가 표시됐습니다.
worktree /private/tmp/example-linked
HEAD a0ce579...
branch refs/heads/stale-demo
prunable gitdir file points to non-existent location
재현에서는 방금 경로를 사라지게 했기 때문에 --expire now를 dry-run과 실제 prune에 모두 붙였습니다. dry-run은 제거할 관리 항목을 보여 줬고, 실제 prune 뒤 해당 worktree는 목록에서 사라졌습니다. stale-demo 브랜치는 그대로 남았습니다. 이 결과는 해당 재현 환경의 확인값이며 브랜치를 정리해도 된다는 뜻이 아닙니다. 브랜치 삭제는 별도 판단입니다.
폴더를 옮겼다면 prune 대신 repair입니다
Finder에서 linked worktree를 다른 위치로 옮겼다면 Git이 알고 있는 예전 경로와 실제 새 경로가 어긋난 상태입니다. 새 경로를 알고 있다면 원본 저장소에서 다음처럼 연결 복구를 시도합니다.
git worktree repair "/새로운/worktree/경로"
git worktree list --porcelain
경로는 예시가 아니라 실제 새 폴더로 바꿉니다. 복구 뒤 목록이 새 경로를 가리키는지 확인합니다. 폴더가 정말 폐기된 경우와 이동한 경우를 먼저 나누는 이유가 여기에 있습니다.
다음부터는 폴더보다 Git 명령으로 먼저 제거하세요
worktree 폴더가 아직 있고 더 이상 필요하지 않다면 먼저 변경사항을 확인합니다.
git -C "/worktree/경로" status --short
git worktree remove "/worktree/경로"
status --short에 파일이 나오면 커밋하지 않은 변경이 있다는 뜻입니다. 보존 방법을 정하기 전에는 제거하지 마세요. 정상적인 linked worktree 종료에는 Finder 휴지통보다 git worktree remove를 먼저 쓰는 편이 등록과 폴더를 함께 관리하기 쉽습니다.
기존 worktree 폴더가 아직 존재하고 branch name is already used by worktree 오류만 보인다면 이 글의 prune 단계가 아니라 브랜치를 사용 중인 worktree 경로 찾기부터 확인하세요.
새 worktree를 만들 때 invalid reference: HEAD가 뜬다면 stale 등록 문제가 아닐 수 있습니다. 그때는 선택 폴더와 첫 커밋을 확인하는 순서로 이동하세요.
자주 묻는 질문
prune을 실행하면 브랜치도 삭제되나요?
이번 Git 2.38.1 재현에서는 stale worktree 관리 정보만 목록에서 사라졌고 브랜치는 남았습니다. 그래도 실제 저장소에서는 dry-run 결과와 대상 경로를 먼저 확인해야 합니다. 브랜치 삭제는 이 절차와 별도입니다.
일반 dry-run에 아무것도 나오지 않으면 어떻게 하나요?
stale 항목이 없다는 뜻으로 단정할 수 없습니다. 방금 사라진 경로는 기본 만료 유예 안에 있을 수 있습니다. 경로 이동·외장 저장장치·locked 여부를 먼저 확인하고, 정말 버린 항목이라면 --expire now --dry-run --verbose로 모든 즉시 만료 후보를 확인하세요.
검증 기준
- 마지막 업데이트일: 2026-09-19
- 확인 환경: macOS, Git 2.38.1, 비민감 임시 저장소. Codex App 사이드바 제거 동작은 직접 재현하지 않았습니다.
- 주요 근거: Git 공식
git-worktree문서 - 보조 근거: https://github.com/openai/codex/issues/12685
- Git 공식 문서에서 remove, prune, dry-run, repair, lock의 역할을 2026-09-19에 확인했습니다.
- macOS의 Git 2.38.1 비민감 저장소에서 경로 누락 → prunable 표시 → dry-run → 실제 prune → 목록 제거와 브랜치 유지까지 재현했습니다.
- 안전한 재현을 위해 임시 폴더를 삭제하는 대신 수동 이동해 등록된 원래 경로를 사라지게 했습니다.
- OpenAI Codex 이슈 #12685의 앱 동작은 공개 작성자의 자기보고입니다. 이번 회차에서는 Codex App의 사이드바 제거 동작을 직접 재현하지 않았습니다.
- Google 상위 일반 결과는 공식 Git 문서와 stale worktree 정리 글이 정확 문제를 답했고, Naver 상위 일반 결과는 넓은 worktree 사용법 위주였습니다. 이 글은 비개발자가 dry-run부터 시작하고 이동·오프라인·잠금 예외를 구분하는 데 초점을 둡니다.
- 대표 이미지는 실제 앱 화면이 아닌 개념도입니다. strict SEO/AEO와 독립 최종검수는 아직 남았습니다. 이 초안은 발행 준비 완료 상태가 아닙니다.
참고: Git 공식 worktree 문서 · OpenAI Codex 공개 이슈 #12685
직접 만든 실습 자료와 새 도구 소식
AI 도구로 만든 실습 자료, 달라진 기능과 강의 소식을 준비하고 있습니다. 발송을 시작하면 안내해 드려요. 먼저 확인 메일에서 본인 이메일을 확인해 주세요.
신청하기 전에 첫 소식 미리보기에서 내용과 자료를 확인해 보세요.