본문으로 바로가기

[Git] 저장소 초기화와 압축

category ETC/Git 2021. 1. 12. 23:28
728x90
반응형

"그동안 커밋 & 푸시로만 저장소에 히스토리를 쌓다 보니 어느 순간에. git의 폴더가

100mb가 넘어버려 push를 하는 과정이 길기도 하고 push에 실패했다."

 

 

History

History 내역 즉 커밋 내역은 살려두고 용량을 압축하거나 줄이는 방법은 없을까 하고 열심히 구글링을 시작하여 다음과 같은 방법을 찾았다.

git-scm.com/book/ko/v2/Appendix-C%3A-Git-%EB%AA%85%EB%A0%B9%EC%96%B4-%EA%B4%80%EB%A6%AC

 

Git - 관리

git filter-branch 명령은 커밋 뭉치를 수정하는 데 사용한다. 전체 히스토리에서 파일을 삭제하거나 디렉토리 구조를 변경하는 데 사용한다.

git-scm.com

링크를 건 사이트에서는 여러 가지 내용이 나와있다. 그중 git gc를 이용해서 압축을 시도해 봤으나 실행 전과 후가 크게 달라지지 않았다. 어떻게 해야 될까? 사실 용량이 100mb 넘어가는 로컬 저장소에 대해서는 BFG를 적용하면서 꾹꾹 눌러 담으며 어떻게든 push를 날리곤 했었다. ( bfg : rtyley.github.io/bfg-repo-cleaner/ )

그런데 bfg를 사용하는데도 push에 실패하더니 어떻게 하지 생각하던 찰나에 내린 결론은 두 가지이다.

 

첫 번째, github에 저장소를 새로 생성하고 원래 쓰던 저장소의 폴더나 파일들을 세부 항목으로 나눠서 저장하는 방법

 

두 번째, 서두에 언급했 듯 히스토리 내역을 지우고 커밋을 다시 쓰는 방법

 

두 번째 방법은 사용하기 싫었지만 첫 번째 방법은 시간이 오래 걸리므로 두 번째 방법을 사용했다. 그럼 두 번째 방법을 적용했을 때 일어나는 문제가 무엇 일지에 대해 생각해보니 다음과 같은 증상이 있지 생기지 않을까 유추해봤다.

 

단순하게 생각했을 때 이전 커밋을 초기화하는 거니까 풀밭이 황무지가 되지 않나 라는 생각과 만약 이렇게 했음에도 용량이 줄어들지 않으면 어쩌지 정도였다. 일단 무슨 결과가 일어나도 개인적인 저장소고 백업도 해놨으니 실행에 옮겼다.

 

전자의 경우 예상외로 풀밭은 살아 있었다. 후자의 경우 확실히 줄어든 것을 확인했다. 커밋 내역을 초기화하기 전에 128mb 정도 되던 게 초기화 후 56mb ( 폴더별 용량의 합 + .git 폴더 용량) 정도로 줄어들었다. 하지만 여기서 궁금한 점이 생겼다. 초기화한 후에도 git gc를 이용해 압축을 하면 더 줄일 수 있지 않을까?

 

실행에 옮겨봤다. (여기 실행결과는 이미지로 건졌다)

위의 내용은 단순히 git gc만을 이용했더니 줄어들진 않았는데 아래와 같이 gc를 이용했을 경우

1mb나 줄었다.

 

이 과정을 수행하면서 아쉬운 점이 구글링을 통해 얻은 정보를 조합해서 해결하고자 하는 것에 목적을 둔 것이므로 git gc와 git gc에 aggressive의 차이점을 정확히 인지하지 못한 상태이다. 나중에 이 부분을 공부해보기로 하고 이만 글을 마쳐보겠다.

728x90
반응형