1. 먼저 로컬에 작업할 원격 레포지토리를 받아온다.
mirror옵션을 통해 clone 한다. workingtree없이 받아온다.
git clone --mirror \[clone할 원격 깃 주소.git\]
2. 다음 사이트에 접속해서 bfg-1.14.0.jar를 다운받는다 (버전은 다운시기에 따라 상이하다)
https://rtyley.github.io/bfg-repo-cleaner/
다운받은 .jar 파일을 clone받은 레포지토리와 같은 폴더에 놓는다.
3. sensible-info.txt 생성 및 삭제
커밋내역에 있는 정보를 삭제하는 방법은 2가지가 있다.
텍스트 자체를 삭제하는 방법
삭제할 내용의 텍스트를 담은 sensible-info.txt 파일을 생성한다.
다음과 같은 명령어를 입력한다.
java -jar bfg-1.14.0.jar --replace-text sensible-info.txt [레포지토리 이름.git]
파일자체를 삭제하는 방법
파일경로를 담은 sensible-info.txt파일을 생성한다.
다음과 같은 명령어를 입력한다.
java -jar bfg.1.14.jar --delete-files sensible-info.txt [레포지토리 이름.git]
4. 리포지토리 정리 및 변경 사항 적용
다음과 같은 명령어를 입력한다.
git reflog expire --expire=now --all && git gc --prune=now --aggressive
5. 원격 레포에 적용
git push --force origin master
혹시 새로운 원격 레포에 올리고 싶다면, remote를 변경해준다.
git remote add origin [새로운 원격 레포이름.git]
잘 적용되었는지 확인해보기
git log -S [민감정보]
해당 명령어 입력시 안나온다면, 올바르게 민감정보가 제거됐다고 할 수 있겠다.