[목차]
- 원인 - index파일 손상
- 해결 - 손상된 index파일 초기화 (
rm -f .git/index && git reset
) - 안전한 방법 -
git update-index --refresh
먼저 시도
원인 - index 파일 손상
파일을 분명히 수정했는데도 git status
나 git diff
에서 변경 내역을 전혀 감지하지 못할 때가 있습니다. 이 현상은 보통 Git의 인덱스(Index) 파일이 손상되었을 때 발생합니다.
인덱스는 커밋할 파일 목록을 관리하는 ‘스테이징 영역’의 실체인데, 이 파일이 꼬이면 Git이 파일의 변경 상태를 제대로 파악하지 못하게 됩니다.
이럴 때 시도하는 해결책이 바로 인덱스 파일을 삭제하고 다시 생성하는 것입니다.
손상된 인덱스 파일 초기화 방법
- 삭제: Git 저장소의 최상위 경로(
.git
폴더가 있는 곳)에서 첫 명령을 실행 - 재생성: 마지막 커밋(HEAD) 상태 기준으로 Git이 인덱스 생성하도록 다음 명령 실행
rm -f .git/index
git reset
잘 되었는지 확인
이제 다시 git status
를 실행해 보면, 이전에는 보이지 않던 수정된 파일들이 Changes not staged for commit
(또는 Untracked files
) 목록에 정상적으로 나타날 겁니다.
💡 더 안전한 방법 - update-index
사실 인덱스 파일을 rm
으로 직접 삭제하는 것은 조금 과격한 방법입니다. 그전에 아래 명령어를 먼저 시도해 보는 것이 더 안전하고 권장되는 방식입니다.
git update-index --refresh
이 명령어는 인덱스 파일은 그대로 둔 채, 파일 시스템의 최신 상태를 읽어와 인덱스 정보를 갱신하는 역할을 합니다. 대부분의 경우 이 명령어로 문제가 해결됩니다.