유튜브 플젝을 깃에 올리고 나서 며칠 후에 이런 메일이 도착했다.
api key가 노출되어 있다는 경고 메일인데,
아니 난 분명 env 파일을 만들어서 gitignore에 저장했는데..?
근데 들어가서 커밋 히스토리 확인해보니 env파일 만들기 전에 api key를 그대로 노출한 채 커밋을 했었다..(개바보)
그래서 대체 이걸 어떻게 할까 하다가..
'커밋을 다 지우고 레포를 새로 만들어버려..?' 라는 생각도 했지만 그건 너무 아까웠다ㅠㅠ
Repo filter랑 뭐 이것저것 폭풍 구글링 하다가
Git 레포 기록에서 잘못된 데이터를 제거하기 위해 만들어졌다는 BFG Repo Cleaner라는 걸 발견했다!!
근데 이걸 사용하려면 java 버전 8 이상이 설치되어 있어야 한다고 해서 오라클 회원가입하고 java까지 설치했다..ㅋㅋㅋ
java를 설치한 후!
https://rtyley.github.io/bfg-repo-cleaner/ 접속해서 bfg-repo-cleaner를 설치
지우고 싶은 키워드 목록을 담은 txt파일 생성
예를 들어 내 커밋 내역에서 'removeword
'와 'abc123
'이라는 데이터를 지우고 싶다면 이렇게 아래처럼 작성한다!
저장하고 난 혹시 몰라서 이 txt파일도 gitignore
에 포함시켰다.
터미널에서 다운로드한 jar 파일 실행
java -jar [BFG.jar의 경로] --replace-text [2에서 생성한 txt파일]
나의 경우에는
java -jar /Users/redcat17/Downloads/bfg-1.14.0.jar --replace-text replacements.txt
이렇게 입력하고 실행시켰다!
만약 파일을 통째로 숨기고 싶다면
java -jar [BFG.jar의 경로] --delete-files [숨김처리할 파일명]
입력하면 된다.
Git에 push
git push -f [remote명] [branch명]
나의 경우에는
git push -f origin master
로 입력했다!
이 과정을 마치고 다시 커밋 내역을 확인해보니
이렇게 원래는 노출되어 있던 key부분이 ***REMOVED*** 로 처리되었다!
오늘의 교훈:
민감한 데이터나 api key들은 push 하기 전에 꼭 미리 환경변수로 설정하자!^^