본문으로 건너뛰기
개발 머꼬
개발 노트Git
hohyeon.dev17

.gitignore에 추가했는데 파일이 계속 추적되는 이유

  • #Engineering Note
  • #Git
  • #Security

문제 발생

.env 파일을 실수로 커밋한 뒤 .gitignore.env를 추가했는데, git status에서 여전히 그 파일의 변경 사항이 추적되고 있었습니다.

원인 분석

.gitignore아직 Git이 추적하지 않는 파일에만 적용됩니다. 이미 한 번이라도 git add로 추적을 시작한 파일은, 그 이후에 .gitignore에 패턴을 추가해도 Git이 계속 추적합니다. .gitignore는 "이 파일들은 애초에 추적 후보에 넣지 마라"는 규칙이지, "이미 추적 중인 파일을 빼라"는 명령이 아닙니다.

해결 방안

  1. 이미 추적 중인 파일을 Git의 추적 대상에서 제외하려면, 실제 파일은 로컬에 그대로 두고 Git의 인덱스(캐시)에서만 제거해야 합니다.
git rm --cached .env
git commit -m "Remove .env from tracking"

--cached 옵션이 핵심입니다 — 이게 없으면 로컬 파일까지 실제로 삭제됩니다.

  1. 디렉터리 전체를 빼야 한다면 -r 옵션을 함께 씁니다.
git rm -r --cached node_modules/
  1. .env 같은 민감한 파일을 이미 커밋했었다면, git rm --cached로 앞으로의 추적만 끊는다고 과거 히스토리에 남은 값이 사라지는 것은 아닙니다 — 저장소 히스토리 전체에서 실제로 지워야 한다면 git filter-repo(권장) 같은 별도 도구가 필요하고, 이미 다른 사람과 공유된 저장소라면 그 값(비밀번호, API 키 등)은 **유출된 것으로 간주하고 즉시 회전(rotate)**해야 합니다 — 히스토리에서 지우는 것만으로는 안전을 보장할 수 없습니다.
  2. 새 프로젝트를 시작할 때는 .gitignore를 첫 커밋 전에 미리 작성해서 이런 상황 자체를 예방하는 것이 가장 확실합니다.

공식 문서

마지막 수정

좋아요북마크

댓글0

아직 댓글이 없어요. 첫 의견을 편하게 남겨 보세요.