[TIL] .gitignore에 적었는데 왜 계속 올라갈까요?

차곡코딩·2일 전

TIL · 학습 복습

목록 보기
4/5

개발 메모를 복습하면서 .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의 추적 대상에서 제거해요. 변경 내용을 확인한 뒤 커밋해야 저장소에도 반영됩니다.

다만 이 작업으로 예전 커밋의 내용까지 사라지지는 않아요. 실제 키가 공개됐다면 파일만 지우고 끝낼 게 아니라, 해당 서비스에서 키를 폐기하고 새로 발급해야 합니다.

이번 복습에서 남겨 둘 문장은 간단해요. 파일 이름, 무시 규칙, 기존 추적 여부를 따로 확인하자. 이 세 가지를 구분하면 “적어 뒀는데 왜 계속 보이지?”라는 상황을 이해하기 쉬워져요.

참고: Git 공식 문서 — gitignore

profile
비전공자의 개발 성장 기록. 바이브코딩 프리랜서 경험부터 Python·SQL·AI 서비스 개발까지

0개의 댓글