개발 메모를 복습하면서 .env와 .gitignore의 역할을 함께 정리해 봅니다. 둘 다 이름 앞에 점이 있어서 비슷해 보이지만, 하는 일은 달라요.
.env는 환경 설정을 적어 두는 파일 이름으로 자주 쓰여요. 이름이 .env라는 이유만으로 Git이 자동으로 제외해 주지는 않아요. 비밀값을 담았다면 파일 이름만 믿으면 안 되겠죠.
프로젝트 루트의 .gitignore에 아래처럼 적을 수 있어요.
.env
.venv/
__pycache__/
이 예제에서는 .env 파일, .venv 디렉터리, Python이 만드는 __pycache__ 디렉터리를 무시하도록 지정했어요. 실제로 어떤 파일을 제외할지는 프로젝트에 맞춰 정하면 됩니다.
여기서 기억할 점은 이미 Git이 추적하는 파일에는 이 규칙만 추가해도 효과가 없다는 것이에요. .gitignore는 과거 커밋을 지우는 기능도 아니에요.
다음 명령은 프로젝트 저장소 안에서 실행해요.
git ls-files -- .env
.env가 출력된다면 Git이 이미 추적하고 있는 상태예요. 아직 추적하지 않는 파일에 어떤 무시 규칙이 적용되는지 알고 싶다면 다음 명령을 사용할 수 있어요.
git check-ignore -v .env
규칙과 파일 경로가 출력되면 어느 설정에서 제외했는지 확인할 수 있어요. 출력이 없을 때는 파일이 이미 추적 중인 상황인지도 함께 살펴봐야 해요.
이미 추적 중인 .env를 다음 커밋부터 제외하려면, 무시 규칙을 추가한 뒤 아래 명령을 사용할 수 있어요.
git rm --cached -- .env
git status
--cached를 붙이면 작업 폴더의 파일은 남기고 Git의 추적 대상에서 제거해요. 변경 내용을 확인한 뒤 커밋해야 저장소에도 반영됩니다.
다만 이 작업으로 예전 커밋의 내용까지 사라지지는 않아요. 실제 키가 공개됐다면 파일만 지우고 끝낼 게 아니라, 해당 서비스에서 키를 폐기하고 새로 발급해야 합니다.
이번 복습에서 남겨 둘 문장은 간단해요. 파일 이름, 무시 규칙, 기존 추적 여부를 따로 확인하자. 이 세 가지를 구분하면 “적어 뒀는데 왜 계속 보이지?”라는 상황을 이해하기 쉬워져요.