[git] 자식 저장소 크기 줄이기

나는 repo 크기를 줄이는 좋은 자습서를 찾으려고했지만 아무것도 찾지 못했습니다. 리포지토리 크기를 줄이려면 … 약 10MB이지만, Heroku는 50MB 만 허용하며 앱 개발이 거의 끝나지 않았습니다.

나는 일반적인 용의자 (log, vendor, doc 등)를 .gitignore에 이미 추가했습니다. 최근에 .gitignore 만 추가했지만.

어떤 제안?



답변

git gc --aggressive정리 프로세스를 강제로 수행하는 한 가지 방법입니다 (확실히 🙂 git gc --aggressive --prune=now. 당신이 다른 명령 너무 REPO를 청소합니다. 그러나 때때로 git gc혼자서 repo의 크기를 늘릴 수 있음을 잊지 마십시오 !

또한 a 다음에 사용 filter-branch하여 일부 디렉토리를 히스토리에서 제거하도록 표시 할 수 있습니다 (추가 공간 확보). 여기를 참조 하십시오 . 그러나 그것은 아무도 당신의 공개 리포지토리에서 당기고 있지 않다는 것을 의미합니다. 디렉토리를 정리할 filter-branch수 있도록 백업 참조를에 보관할.git/refs/original 수 있습니다.

마지막으로, 언급 한 바와 같이 이 댓글에이 질문 ; Reflog를 청소하면 도움이 될 수 있습니다.

git reflog expire --all --expire=now
git gc --prune=now --aggressive

더 완벽하고 위험한 해결책은 git 저장소에서 사용하지 않는 객체를 제거하는 것입니다.


답변

답장을 보내 주셔서 감사합니다. 내가 한 일은 다음과 같습니다.

git gc
git gc --aggressive
git prune

그 트릭을 한 것 같습니다. 나는 약 10.5MB로 시작했고 지금은 980KB를 조금 넘습니다.


답변

필자의 경우 몇 개의 큰 (> 100Mb) 파일을 푸시 한 다음 계속해서 제거했습니다. 그러나 그들은 여전히 ​​내 레포의 역사에 있었기 때문에 그것들을 제거해야했습니다.

그 트릭은 무엇 이었습니까?

bfg -b 100M  # To remove all blobs from history, whose size is superior to 100Mb
git reflog expire --expire=now --all
git gc --prune=now --aggressive

그런 다음 지점에 힘을 가해 야합니다.

git push origin <your_branch_name> --force

bfg 는 brew를 사용하여 Linux 및 macOS에 설치할 수있는 도구입니다.

brew install bfg


답변