카테고리 없음

[Git] Github 커밋내역에서 민감정보 삭제하기(feat. BFG Repo-Cleaner)

제비랑 2024. 4. 8. 16:34

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 [민감정보]

해당 명령어 입력시 안나온다면, 올바르게 민감정보가 제거됐다고 할 수 있겠다.