Git deposu dosyası (tarih)Kaldır
(soru vücudun alt) çözüldü
Şimdiye kadar ne ben bunu uzun zamandır arıyorum şimdi
- http://dound.com/2009/04/git-forever-remove-files-or-folders-from-history/ ve
- http://progit.org/book/ch9-7.html
Hemen hemen aynı yöntem, ama ikisi de pack dosyaları... Sıkışmış nesneleri bırakın.
Ben ne çalıştı:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch file_name'
rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc
Hala pack dosyaları var, ve bunu biliyorum
git verify-pack -v .git/objects/pack/pack-3f8c0...bb.idx | sort -k 3 -n | tail -3
Ve bu:
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch file_name" HEAD
rm -rf .git/refs/original/ && git reflog expire --all && git gc --aggressive --prune
Aynı...
git clone hile denedim, dosyaları (~3000) bazıları kaldırıldı ama büyük dosyalar hala orada...
Ben depoyu, 200M~, ve ben gerçekten onları orada istemiyor... Ve depo sıfırlamak istemiyorum 0: büyük bazı eski dosyaları(
ÇÖZÜM: Bu dosyaları kurtulmak için en kısa yol
- kontrol edin .gıt/-Evet, çok dolu benim sorunum uzaktaki bir depo için
refs/remotes/origin/masterorada bir çizgi vardı, silin, aksi halde git bu dosyaları kaldırmaz - (isteğe bağlı)
git verify-pack -v .git/objects/pack/#{pack-name}.idx | sort -k 3 -n | tail -5en büyük dosyaları kontrol etmek için - (isteğe bağlı)
git rev-list --objects --all | grep a0d770a97ff0fac0be1d777b32cc67fe69eb9a98- bu dosyaları kontrol etmek için git filter-branch --index-filter 'git rm --cached --ignore-unmatch file_names'- tüm değişiklikleri bir dosyayı kaldırmak içinrm -rf .git/refs/original/- gıt yedekleme kaldırmak içingit reflog expire --all --expire='0 days'- tüm gevşek nesneleri sona erecekgit fsck --full --unreachable- eğer herhangi bir gevşek nesneler olup olmadığını kontrol etmek içingit repack -A -d- eşyalarımı topluyordumgit prune- son olarak bu nesneleri kaldırmak için
CEVAP
Depo veri erişimi olmadan kesin bir şey söyleyemem, ama muhtemelen dolu başvuruları hala eski başvuru git filter-branch çalıştırılmadan önce işleyen bir veya daha fazla olduğuna inanıyorum. Bu reflog süresi (ambalajsız) orijinal hakemler kaldırdık bile git fsck --full --unreachable büyük damla ulaşılamaz bir nesne aramıyor nedenini açıklıyor.
Burada yapmak istediğim bu git filter-branch git gc yaptıktan sonra ():
1) Orijinal başvuruları gitmiş olduğundan emin Olun:
rm -rf .git/refs/original
2) tüm reflog girdileri Süresi:
git reflog expire --all --expire='0 days'
3) eski dolu başvuruları için Kontrol edin
Bu zor, ne kadar bağlı ... ... yol açabilir. Bu otomatik olarak herhangi Gıt komutları bilmiyorum, bu elle yapmak zorunda kalacağız sanırım. .git/packed-refs bir yedeğini alın. Şimdi .git/packed-refs Düzenle. Eski hakemler için (özellikle, eğer .git/refs/original hakemler herhangi bir dolu olmadığını denetleyin. Eğer orada olmasına gerek yok, herhangi bir eski olanları bulursanız, onları (ref satırını kaldırın) silin.
packed-refs dosya temizliği bitirdikten sonra, git fsck ulaşılmaz nesneleri fark olmadığını görmek:
git fsck --full --unreachable
O çalıştı, ve git fsck şimdi ulaşılamaz olarak büyük blob rapor ederse, bir sonraki adıma geçmek.
4) dolu arÅŸiv(ler) Temizleyebilirsiniz
git repack -A -d
Ulaşılmaz nesneleri çıkartın sağlayacaktır bukalpaketten.
5) (ulaşılamaz) gevşek nesneleri Budamak
git prune
Hepsi bu olsa gerek. Git gerçekten dolu başvuruları yönetmek için daha iyi bir yol olmalı. Belki benim bilmediğim daha iyi bir yolu yoktur. Daha iyi bir yol olmaması, packed-refs dosyasını el ile düzenlemek gitmek için tek yol olabilir.

UTC zaman dilimi JPA/Hazırda bekleme d...
Log4j geçerli tarih eklemek için bir g...
Arasındaki fark .dosya deposu .piç dos...
Tarih biçimi ve Windows toplu iş komut...
Nasıl Git deposu tarih commit/kaldırma...