기술 · 실용 가이드
Git index.lock이 존재하나요? 삭제 전에 소유 프로세스를 증명하세요
잠금은 실행 중인 Git, 충돌 후 잔여 파일, 계속 다시 만드는 훅·IDE, 또는 쓸 수 없는 저장소에서 생길 수 있습니다. 실제 경로와 보유자를 확인하고 스테이징 상태를 보존한 뒤 증명된 경계만 고치세요.

index.lock은 Git 인덱스 갱신을 보호하는 파일이지 보이는 즉시 지울 쓰레기가 아닙니다. 같은 메시지도 활성 쓰기, 충돌 잔여물, 반복 생성, 원자적 교체 실패를 뜻할 수 있습니다.
실제 경로, 스테이징 상태, 보유자, 재생성, 쓰기 가능성을 차례로 기록하고 한 번의 좁은 수정을 적용하세요.
상태를 보존하고 실제 잠금 경로를 찾기
전체 오류, git status, git diff --cached --stat를 저장합니다. .git/index는 삭제하지 마세요. git rev-parse --path-format=absolute --git-path index.lock으로 Git이 실제로 쓰는 경로를 구합니다.
존재 여부, 소유자, 권한, 크기, 수정 시간을 기록합니다. Git은 index.lock으로 새 인덱스를 만들고 원자적으로 확정하거나 롤백합니다.
잠금을 보유하거나 다시 만드는 프로세스 증명
Linux/macOS에서는 lsof, Windows에서는 Process Explorer 또는 Handle로 정확한 경로를 검색합니다. 중지 전에 프로세스, 계정, 부모를 확인하세요.
보유자가 없으면 한 번만 통제된 재시도를 관찰합니다. 잠금이 즉시 돌아오면 IDE, 훅, 감시기, 자동화 또는 겹친 Git 명령이 원인입니다.
확인된 오래된 잠금만 제거
경로가 정확하고 보유자가 없으며 원래 작업이 끝났고 즉시 재생성되지 않을 때만 stale로 판단합니다. 그 index.lock만 제거하고 index, HEAD, refs는 건드리지 마세요.
git status 후 원래 쓰기를 한 번 재시도합니다. 성공 후 잠금이 사라지고 git diff --cached에 의도한 내용만 남는지 확인합니다.
권한과 unlink 오류는 다른 고장으로 처리
Git이 잠금을 만들거나 rename 또는 unlink하지 못하면 같은 사용자로 Git 디렉터리의 소유권, 쓰기 가능성, 파일시스템을 검사합니다.
sudo git이나 광범위한 chown을 만능 수정으로 쓰지 마세요. 증거가 가리키는 사용자, 마운트, 보안 도구 또는 정책 경계만 고칩니다.
재현 가능한 확인으로 종료
한 터미널에서 원래 Git 쓰기를 실행하고 종료 코드, 잠금 소멸, status와 cached diff를 확인합니다.
자동화는 같은 인덱스에 쓰는 명령을 직렬화하고 시작·종료·저장소 경로를 기록합니다.
