programing

Git 저장소 크기 감소

javajsp 2023. 5. 4. 18:40

Git 저장소 크기 감소

저는 리포 크기를 줄이기 위한 좋은 튜토리얼을 찾았지만 찾을 수 없었습니다.어떻게 하면 저장소 크기를 줄일 수 있을까요? 약 10MB이지만, Heroku는 50MB만 허용하고 앱 개발을 거의 완료하지 못했습니다.

저는 이미 gitignore에 일반 용의자(로그, 벤더, 문서 등)를 추가했습니다.최근에 .gitignore를 추가했을 뿐입니다.

좋은 의견이라도 있나?

11년 후인 2021년 2월 업데이트: 새 명령(man 페이지)이 대체되어야 합니다.git gc예약할 수 있습니다.


Original: 제거 프로세스를 강제로 수행하는 방법 중 하나입니다(확실히 다음 사항이 있습니다).git gc --aggressive --prune=now) repo를 정리할 다른 명령도 있습니다.하지만 가끔은 잊지 마세요.git gc그것만으로도 레포의 크기를 늘릴있습니다!

다음 이후에도 사용할 수 있습니다.filter-branch기록에서 제거할 일부 디렉토리를 표시합니다(공간 확보). 여기를 참조하십시오.하지만 그것은 아무도 당신의 공적 평판에서 손을 떼지 않는다는 것을 의미합니다.filter-branch 에서 백업 참조를 보관할 수 있으므로 디렉터리도 정리할 수 있습니다.

마지막으로, 이 의견과 이 질문에 언급된 바와 같이, 리필로그를 청소하면 다음과 같은 도움이 될 수 있습니다.

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

훨씬 더 완전하고 위험할 수 있는 솔루션은 Git 저장소에서 사용하지 않는 개체를 제거하는 것입니다.


이제 (Git 2.24+, 2019년 4분기)는 구식 또는 BFG를 대체합니다. 먼저 설치될 파이썬 기반 도구입니다.

Joe가 제안합니다.

# Find the largest files in .git:
git rev-list --objects --all | grep -f <(git verify-pack -v  .git/objects/pack/*.idx| sort -k 3 -n | cut -f 1 -d " " | tail -10)

# Strat filtering these large files:
git filter-repo --path-glob '../../src/../..' --invert-paths --force
#or
git filter-repo --path-glob '*.zip' --invert-paths --force
#or
git filter-repo --path-glob '*.a' --invert-paths --force

git remote add origin git@github.com:.../...git
git push --all --force
git push --tags --force

당신의 답변에 감사합니다.제가 한 일은 다음과 같습니다.

git gc
git gc --aggressive
git prune

그것이 효과가 있었던 것 같습니다.약 10.5로 시작했습니다.MB 그리고 지금은 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

이는 모든 사용자에게 영향을 미치지는 않지만 저장소 크기가 큰 이유 중 하나는 Git 하위 모듈일 수 있습니다.

하나 이상의 하위 모듈을 추가했지만 사용을 중지하고 일부 파일이 다음 위치에 남아 있을 수 있습니다..git/modules디렉토리입니다.중복 하위 모듈 파일을 배포하려면 이 질문을 참조하십시오.

의 입니다..git/modules예를 들어, 다음과 같은 일을 합니다.git gc --aggressive --prune.

이는 저장소 크기에 좋은 영향을 미치지만 Git 하위 모듈(예: 대규모 라이브러리)을 사용하는 한 저장소 크기가 크게 변경되지 않아야 합니다.

언급URL : https://stackoverflow.com/questions/2116778/reduce-git-repository-size