이전 프로젝트로 돌아가서 일부 업데이트를 수행 했으므로 이제는 저장소가 얼마나 지저분한 지 아무도 언급하지 않았습니다. 그것은 많은 커밋을 많이 가지고 있으며 매우 잘 관리되지 않은 것 같습니다 아주 오래된 하나입니다.지저분한 지저분한 저장소에서 파일을 제거하려고 시도했지만 제거되지 않는 것 같습니다.
짧은 이야기 .git 파일은 이제 4.02Gb (예, 오른쪽, 기가 바이트) 크기입니다. 나는 처음부터 추적해서는 안되는 오래된 파일들을 모두 제거하려고한다. (필자는 .ipa와 .swfs를 즉시 볼 수있다.)
저는 atlassian이 자신의 Maintaining a Git Repository에서 추천하는 작은 쉘 스크립트를 사용했습니다.이 스크립트는 매우 도움이되는 상위 10 명의 범죄자를 나열했지만, 기록에서 파일을 제거하는 데 어려움을 겪고 있습니다.
모두가 가비지 수집을 제안한 다음 실행하고있는 것처럼 보였습니다. git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch <file/dir>' HEAD
을 실행 해 보았습니다. 나는 너무 거대하기 때문에 공격적인 GC를 사용하지 않으려 고 노력했습니다. 몇 시간이 걸립니다. 그러나 함께 GC를 실행 한 후 : git gc --prune=now
그것은 어떤 영향을 미치지 않는 것 같아요 그리고 가장 큰 파일의 목록을 내 스크립트를 실행할 때 같은 파일이 나타납니다.
크기를 줄이기 위해 내 저장소의 모든 내역에서 이전에 커밋 된 파일을 제거하려면 어떤 명령을 사용해야합니까?
안녕하세요 앤드류, 네 말이 맞아요. 나는 그 몇 걸음도 놓쳤습니다! 나는 원래 Windows 용 자식에서 실행했지만 리눅스 컴퓨터로 옮겼습니다.'git for-each-ref' 명령이 파이프와 올바르게 작동하지 않기 때문입니다. 그러나 이것의 아무도는 문제를 해결 한 것을 보이지 않는다, 파일은 큰 파일 로케이터 원본 및를 달릴 때 아직도 나타난다.자식 파일 크기가 전혀 줄어들지 않습니다. 어떤 아이디어? –
큰 파일 찾기 스크립트는 blob 만 반환합니까? 아니면 커밋을 제공합니까? –
blob을 반환하는 중, 참조 용으로 실행되는 주요 명령은 다음과 같습니다 :'git verify-pack -v .git/objects/pack/pack - *. idx | grep -v 체인 | 정렬 -k3nr | head'를 선택하면 저장소 트리의 크기, 압축 된 크기, sha 및 객체 위치가 화면에 표시됩니다. –