문제
.env 파일에 Key 등 민감정보를 넣었는데 파일 만들면서 Git에 추가하기를 체크하고 commit 하기 전 지우지 않아서 그대로 push 됐다
공개되있는 Repository라 그대로 둘 수 없어서 BFG Repo-Cleaner를 사용해서 커밋을 완전히 제거해야했다
브랜치 보호가 되어 있는 상태라 프로젝트 팀장에게 임시로 권한을 요청한 후 실행했다
📌 BFG Repo-Cleaner란
Git 기록에서 민감한 파일이나 커밋을 완전히 제거할 수 있게 해주는 고성능 도구
Git 히스토리 안에 들어있는
- 비밀번호
- 토큰(API Key)
- 서비스 키(JSON)
- 대용량 파일 등
👉 이런 것들을 빠르게 삭제할 수 있음
해결
.env
파일이 Git 기록에 남아 있는 상태이므로, BFG 툴을 사용해 모든 기록에서 완전히 제거처리 절차 (Windows 기준)
# 1. 현재 작업 디렉토리로 이동
cd C:/workspace/pro_lec_2
# 2. 현재 Git 저장소를 --mirror 옵션으로 복제
git clone --mirror ./data data-cleaned.git
# 3. BFG로 .env 파일 삭제
java -jar C:/Users/yourname/Downloads/bfg-1.14.0.jar --delete-files .env data-cleaned.git
# 4. 정리된 저장소 디렉토리로 이동
cd data-cleaned.git
# 5. Git GC 실행으로 기록 정리
git reflog expire --expire=now --all
git gc --prune=now --aggressive
# 6. 기존 원격 origin 제거 및 다시 연결
git remote remove origin
git remote add origin https://github.com/ballkkaye/data.git
# 7. 정리된 히스토리를 강제로 푸시 (모든 브랜치, 태그)
git push --force origin --all
git push --force origin --tags
⚠️ 위 작업은 히스토리를 덮어쓰므로 팀과 충분한 사전 공유 후 진행해야함
.env 추가 후 명령어(git add .
) 실행 전 할 일
⛔️ 상황
.env
파일을 만들었는데, 깃에서 추적되고 있음(예: 실수로 "Git에 추가" 체크하고 생성함)
처리 방법
# 1. Git 추적 제거
git rm --cached .env
# 2. .gitignore에 무시 대상 추가 (이미 있으면 생략 가능)
echo ".env" >> .gitignore
# 3. 변경 사항 커밋
git add .
git commit -m "Remove .env from tracking and add to .gitignore"
# 4. 원격 저장소에 반영
git push origin <branch-name>
✅ 최종 체크리스트
.env
는 .gitignore
에 등록됨.env
는 Git 추적 대상 아님민감 정보 포함 커밋은 Git 히스토리에서 제거됨 (필요 시 BFG 수행)
실제 환경에 사용될 키는
.env
또는 환경변수로 주입됨Share article