티스토리 뷰

반응형

git을 사용하여 파일을 관리하다 보면 실수로 git repository에 필요없거나 민감한 내용의 파일을 commit & push 하는 경우가 생긴다.  크기가 큰 경우 파일을 삭제한 후 다시 commit & push 하여도 큰 파일이 history 상에 남아있기 때문에 git repository를 clone 하는 데 시간이 오래 걸리고, repository 폴더의 크기 자체도 무척 커지는 문제가 발생한다. 또한 민감한 내용의 파일 또한 history에 남아있어 이를 복구하여 민감한 정보가 유출될 수도 있다. 이를 해결하는 BFG Repo-Cleaner라는 좋은 도구를 발견하여 여기에 정리하고자 한다.

git history에 남아있는 큰 파일 제거하기

우선 java를 설치한 뒤, BFG Repo-Cleaner의 jar 파일을 다운로드한다. https://rtyley.github.io/bfg-repo-cleaner/ URL 로 접속 후 Requirement 문단 하단에 downloadable jar 링크를 눌러 다운로드한다.
그 뒤 내 git repository를 clone한 다음 jar 파일을 다운로드했다면 아래의 명령어를 사용하여 100MB 보다 큰 파일들을 정리할 수 있다.

$ java -jar bfg.jar --strip-blobs-bigger-than 100M <git repository path>
$ cd <git repository path>
$ git reflog expire --expire=now --all && git gc --prune=now --aggressive
$ git push

git history에 남아있는 민감한 파일 제거하기

위와 같은 방식으로 BFG Repo-Cleaner를 다운로드한 다음, 아래의 명령어를 사용하여 민감한 파일(password.txt)을 제거할 수 있다.

$ bfg --delete-files password.txt <git repository path>
$ cd <git repository path>
$ git push
반응형
댓글