[Git] Git BFG를 이용한 깃 커밋 이력/기록 삭제 방법
Git BFG란?
간단히 말해서 용량이 너무 큰 파일이나 개인정보(비밀번호 등등)를 리포지토리 이력상에서 삭제하는 도구이다.
프로젝트에서 GitHub에 100Mb이상의 고용량 파일을 Push할 때 에러가, 50mb이상은 경고가 나오는데 에러 메시지가 나와서 추가대응을 하더라도 이미 push했던 기록으로 인해 대응이 불가 한 경우,
리포지토리에서 비밀번호나 인증파일 등을 없앨때 사용할수 있다.
BFG를 사용해야 하는 상황
- git에 기밀 정보 (비밀번호, AWS 키, 비밀 키)를 커밋, push 해버려서 리포지토리로부터 완전히 삭제하고 싶을 때
- 거대한 파일을 삭제하고 리포지토리를 가볍게 만들고 싶을 때
git filter-branch
명령어에서 실수를 했을 때
사용법
BFG설치
OS별로 설치하는 방법이 다르다.
[Mac]
터미널을 열어 아래의 명령어를 입력
brew install bfg
[Windows]
- JAVA SDK를 설치
- BFG를 다운로드
- 다운로드한 bfg jar파일을 리포지토리와 동일한 폴더에 넣어주기
리포지토리 백업
완전히 삭제하는 과정에서 리포지토리의 파일이 손상 또는 삭제될 수 도 있으니 로컬또는 다른 리포지토리에 백업을 한다.
터미널을 열고 디렉토리를 로컬 저장소로 변경
터미널(또는 git bash)을 열어서 리포지토리 디렉토리로 이동할것
cd 리포지토리 디렉토리
BFG실행
리포지토리 디렉토리로 이동하였으면 터미널(또는 git bash)에서 bfg를 실행, 아래의 명령어를 이용하여 이력을 삭제한다.
[Mac]
터미널을 열어 아래의 명령어를 입력하여 파일을 삭제후 git push하기
- bfg –delete-folders
같은 이름을 가진 디렉토리들을 삭제 - bfg –delete-files
같은 이름을 가진 파일들을 삭제 - bfg –strip-biggest-blobs <File Size : 128K, 1M…> 해당 Size 이상의 파일들을 삭제
[Windows]
터미널을 열어 아래의 명령어를 입력하여 파일을 삭제후 git push하기
- java -jar bfg.jar –delete-folders
같은 이름을 가진 디렉토리들을 삭제 - java -jar bfg.jar –delete-files
같은 이름을 가진 파일들을 삭제 - java -jar bfg.jar –strip-biggest-blobs <File Size : 128K, 1M…> 해당 Size 이상의 파일들을 삭제
참고 URL
Mac에서 BFG 대용량 파일 삭제 방법
Mac에서 BFG 이력내 패스워드 삭제 방법