업데이트 : git prune
느슨한 객체를 제거한다는 점에서 문제를 "해결"합니다
(를 git gc
호출 git prune
하지만 기본적으로 2 주가 지난 느슨한 객체에 대해서만).
그러나 OP Michael Donohue 가 의견에서 언급 했듯이 :
돌아가서 오래된 개정판을보고 싶다면 2 주 동안 느슨한 물체를 보관하는 안전 측면을 좋아하므로이 솔루션이별로 마음에 들지 않습니다.
나는 git의 크기 나 성능에 문제가 없습니다. 데이터베이스를 압축해도 효과가 없을 때도 데이터베이스 압축을 요구하는 것은 'git gui'입니다.
원래 답변 :
" git gc
" 모든 느슨한 개체를 제거하지 않는 문제는 이전에보고 된 바 있습니다 (2008 년 후반, " " git gc
"은 더 이상 느슨한 개체를 제거하지 않는 것 같습니다 ").
git gc
2 주가 지난 느슨한 객체 만 제거합니다. 지금 제거하려면 git prune을 실행하세요.
그러나 실행할 때 다른 git 프로세스가 활성화되지 않았는지 확인하십시오.
" git gc
"은 (는) 도달 할 수없고 현재 팩에있는 개체의 압축을 풉니 다 .
결과적으로, 자식 저장소에서 사용하는 디스크 공간의 양이 실제로 갈 수있는 최대 는 "후 극적으로 git gc
자신의 파일 시스템 전체에 가까운를 실행하는 사람을 놀라게 할 수있다"작업, 추적 저장소에서 지점의 번호를 삭제 , " git gc
" 을 (를) 수행 하면 매우 불쾌한 놀라움을 얻을 수 있습니다.
[
예 : ]
이전 브랜치는 next-20081204
. 매일 저장소
의 로컬 사본을 업데이트하면 linux-next
이러한 오래된 분기 태그가 많이 누적됩니다.
그런 다음 일련의 전체를 삭제하고을 실행 git-gc
하면 작업에 상당한 시간이 걸리고 사용되는 블록 및 inode 수가 크게 늘어납니다.
" git prune
" 후에 사라질 것이지만,이 하우스 키핑 작업을 수행 할 때 --yes-I-know-what-I-am-doing-and-it's-unsafe-but-just-drop-the-unreachable-objects-cause-this-is-just-a-tracking-repository
"git gc"옵션을 원했습니다 .
그렇다면 귀하의 경우 " git prune
"가 도움이 될까요?
( gc.pruneexpire
위의 동작이 발생하는 데 필요한 config 변수 에서 "now"를 사용하여 가능 ).
또한 (동일한 스레드에서) :
repack -a -d -l
소문자 'a'에 주목하십시오.
git-gc
도달 할 수없는 개체의 압축이 풀리는 원인이되는 대문자 'A'로 repack을 호출합니다. Little 'a'는 자신이하는 일을 알고 있고 git이 도달 할 수없는 개체를 삭제하기를 원하는 사람들을위한 것입니다.