제 상황은 많은 부피가 큰 JPG가 src 코드 자체보다 훨씬 많은 100s의 MB를 추가하여 repo에 포함 시켰습니다.큰 오래된 git archive blob을 제거하십시오.
나는이 JPG가 파일 크기의 1/20 이하를 소비하도록 최적화했기 때문에, 인식 할 수없는 변화는 없었습니다. 저지른 뒤 뒤로 밀었다.
그러나 로컬 복사본에는 여전히이 디스크 공간이 .git 아카이브에서 사용되었습니다 (내부적으로 모든 파일의 이전 버전이 모두 포함되어 있음). 누구든지 새로운 당기기는 또한이 낭비 된 공간을 얻습니다.
원본 마스터가 Bitbucket입니다. 내가 http://linux.yyz.us/git-howto.html
및 How to remove local (untracked) files from the current Git working tree? 이
012을 제안또는 를 사용하여
http://otomaton.wordpress.com/2012/12/17/saving-disk-space-by-garbage-collecting-in-git-repositories/ 처럼 좋은 가이드에서 알아 내려고 많은 시간을 보냈습니다
아카이브의 특정 커밋에서 이러한 거대한 JPG 파일 만 제거하거나 온라인 Bitbucket 저장소에서 제거하지 못하게하는 방법은 무엇입니까? 물론 우리는 (모든 파일의
- 현재 버전 최대한
- 이 보존 개정 내역 & 전 후, 적어도 메타 지식에서이되었다는 커밋 유지하려는 다른 비 때문에 jpg 파일도 영향을 받았습니다.)
- 200 개 이상의 JPG 파일이 있습니다. 이 작업을 한 번에 할 수 있습니까? 일부 매개 변수에서 * .jpg와 같은 와일드 카드를 사용하거나 for 루프를 사용합니까?
우리가 원하지 않는 큰 JPG 버전의 파일의 repo에는 이전 버전이 없었습니다. 무엇보다도
내가 시도 : 아무것도하기 전에
- 이, 얼마나 많은 디스크 공간을 사용하여 .git입니까?
du 72195 ./.git
- 찾기 헤비급 모양 : 마지막 큰 덩어리가 포함되어 있는지 무슨 짓을
git verify-pack -v .git/objects/pack/pack-*.idx |sort -k 3 -n |tail -39 ... 03bcb7d79c1e0a4328420bf00647319465d5d3df blob 2446210 2430913 46915147 52ea2d848645463e01d3dd143dd8d7fd24019335 blob 2467254 2443333 27573576 12d63348c0e87f9602d395e694df6a94601c12f7 blob 2506409 2485495 49346060 645fe7bfaf6ecd0140d144b4c40c19e78f103bd6 blob 2581349 2554398 10567725 72672204aa3c7aec431cba02b32ac012e52e601d blob 3084793 3041294 13122123
- ? 이 특정 파일 이미지/2.JPG (누구의 불필요한 복사본 내가 죽일 희망 중 하나)에 영향을 커밋
git rev-list --objects --all |grep 72672204 72672204aa3c7aec431cba02b32ac012e52e601d images/2.jpg
- 를?
git log --pretty=oneline --branches -- images/2.jpg 98dc75de48a63c2ab9661eb62895ac39ef331aaa MAPSDH-10 #time 30m #comment Grab live copy of Simon's source and push it onto Bitbucket repo; [email protected],2014-04-10_13-55-02 3e7f36f0b1a913feaf43547bca4ad3a5a08957a6 MAPSDH-10 #time 30m #comment Grab live copy of Simon's source and push it onto Bitbucket repo; [email protected],2014-04-10_13-31-49
- 좋아
다음, 그래서 포함, 전 # 3e7f36f0 커밋 이미지/2.JPG의 복사본을 제거하려고 :
git filter-branch --index-filter 'git rm --cached --ignore-unmatch images/2.jpg' -- 3e7f36f0^.. Cannot rewrite branches: You have unstaged changes.
- 융합 단지 캐시에서 모두 제거 :
git rm --cached --ignore-unmatch images/2.jpg rm 'images/2.jpg'
을 그러나, 나는
images/2.jpg
의 현재 버전은 여전히 REPO에있을 것입니다 희망!
git count-objects -v count: 0 size: 0 in-pack: 284 packs: 1 size-pack: 72101 prune-packable: 0 garbage: 0 size-garbage: 0
- 크기 팩 (기원
du
같이 72메가바이트) 여전히 72,101입니다 : - 지역 자식 아카이브의 파일 공간 사용량을 계산합니다. 어쨌든 예상대로 3084793 (3MB)을 비우는 것처럼 보이지 않았습니다.
과 같은 bash 매직을 사용하십시오. 'git rm --cached --ignore-unmatch images/2.jpg'가 나타나서 repo에서 'images/2.jpg' 72672204를 커밋 한 후에도 현재 복사본이 있으므로 좋지 않습니다. – Marcos