.gitignore에 추가했는데 파일이 계속 추적되는 이유
문제 발생
.env 파일을 실수로 커밋한 뒤 .gitignore에 .env를 추가했는데, git status에서 여전히 그 파일의 변경 사항이 추적되고 있었습니다.
원인 분석
.gitignore는 아직 Git이 추적하지 않는 파일에만 적용됩니다. 이미 한 번이라도 git add로 추적을 시작한 파일은, 그 이후에 .gitignore에 패턴을 추가해도 Git이 계속 추적합니다. .gitignore는 "이 파일들은 애초에 추적 후보에 넣지 마라"는 규칙이지, "이미 추적 중인 파일을 빼라"는 명령이 아닙니다.
해결 방안
- 이미 추적 중인 파일을 Git의 추적 대상에서 제외하려면, 실제 파일은 로컬에 그대로 두고 Git의 인덱스(캐시)에서만 제거해야 합니다.
git rm --cached .env
git commit -m "Remove .env from tracking"--cached 옵션이 핵심입니다 — 이게 없으면 로컬 파일까지 실제로 삭제됩니다.
- 디렉터리 전체를 빼야 한다면
-r옵션을 함께 씁니다.
git rm -r --cached node_modules/.env같은 민감한 파일을 이미 커밋했었다면,git rm --cached로 앞으로의 추적만 끊는다고 과거 히스토리에 남은 값이 사라지는 것은 아닙니다 — 저장소 히스토리 전체에서 실제로 지워야 한다면git filter-repo(권장) 같은 별도 도구가 필요하고, 이미 다른 사람과 공유된 저장소라면 그 값(비밀번호, API 키 등)은 **유출된 것으로 간주하고 즉시 회전(rotate)**해야 합니다 — 히스토리에서 지우는 것만으로는 안전을 보장할 수 없습니다.- 새 프로젝트를 시작할 때는
.gitignore를 첫 커밋 전에 미리 작성해서 이런 상황 자체를 예방하는 것이 가장 확실합니다.
댓글0
댓글을 남기려면 로그인이 필요해요. 로그인
아직 댓글이 없어요. 첫 의견을 편하게 남겨 보세요.