Hub documentation
Bir Depodan Hassas Verileri Kaldırma
Bir Depodan Hassas Verileri Kaldırma
Bu sayfa yalnızca git tabanlı depolara (modeller, veri kümeleri ve Spaces) uygulanır.
Hub'da istemediğiniz bir gizli anahtar, özel veri veya herhangi bir dosya yüklediyseniz, yeni bir commit ile silmek yeterli değildir: eski commit'ler hâlâ bu veriyi içerir ve /resolve/<old_sha>/<path>, /blob/<old_sha>/<path> veya /commit/<old_sha> gibi URL'ler dosyayı sunmaya devam eder. Bir dosyayı tamamen kaldırmak için, dosyaya erişebilen tüm ref'lerden (branch'ler, tag'ler ve pull request'ler) kaldırmanız gerekir.
Dosya bir gizli bilgi (token, API anahtarı, şifre) içeriyorsa, önce onu iptal edin veya değiştirin ve ele geçirilmiş olarak değerlendirin: CDN tarafından önbelleğe alınan veya kullanıcılar tarafından indirilen kopyalar, dosyanın kaldırılmasından sonra da var olmaya devam edebilir. Hugging Face token'ları için bkz. Sızdırılan bir token'ın iptal edilmesi.
Genel Bakış
| Eylem | Kaldırır | Yapraklar |
|---|---|---|
| Dosyayı yeni bir commit'te silin | En son revizyondaki dosya | Tüm önceki commit'ler, bu yüzden tek başına yeterli değil |
| Büyük Dosyaları Listele → “rewrite history” ile sil | Dosya içeriği (anında) ve tüm dallardan, etiketlerden ve PR referanslarından imleci | Dosyanın yolu, sha256 ve boyutunu içeren eski commitler, temizlenene kadar |
git filter-repo + zorla itme | Yüklediğiniz her dal ve etiketten dosya | Push etmediğiniz Refs, pull request'lerle sabitlenmiş geçmiş |
super_squash_history | Bir dalın geçmişi | Diğer dallar, etiketler, pull request'ler tarafından sabitlenmiş geçmiş |
| Pull request'i sil | PR referansı, yalnızca sürüm geçmişi korundu | O geçmiş, temizlenene kadar |
Geçmişi yeniden yazmak (yeni bir commit dışında her seçenek) geri alınamaz ve commit SHA'larını değiştirir. git kullanan işbirlikçiler yeniden klonlamalı veya dallarını yeniden yazılmış olanlara sıfırlamalı ve eski geçmişlerini geri itmemelidir; bu, dosyayı yeniden tanıtmaya yol açar.
Önerilen sıra
- Sızan herhangi bir gizli anahtarı iptal edin veya değiştirin.
- “rewrite history” ile LFS ve Xet dosyalarını kaldırın.
- Her dal ve etiketten normal git dosyalarını kaldırın.
- Düzenli git dosyaları için, dosyanın commit edilmesinden sonra açılan pull requestleri silin.
- Sahip olduğunuz duplike depoları temizleyin.
- Gerekirse bize ulaşın.
LFS ve Xet dosyaları
Dosya, deponuzdaki “List Large Files” (bu, Xet destekli dosyaları da içerir) bölümünde görünüyorsa:
- Deponuzun Ayarlar sayfasına gidin.
- “Storage” bölümünde “List Large Files” seçeneğine tıklayın.
- Dosyayı silin, “rewrite history” seçeneğinin işaretli olduğundan emin olun (varsayılan).
“rewrite history” ile büyük bir dosyanın silinmesi, içeriğini hemen kaldırır ve dosyanın işaretçisini her dal, etiket ve PR ref'inden çıkarır. Bu işlem, dosyayı içeren ilk commit'in ve tüm türevlerinin SHA'sını değiştirir ve boş kalan commit'leri (örneğin yalnızca dosyayı ekleyen bir commit) düşürür. Eski commit'ler, dosyanın yolunu, sha256 değerini ve boyutunu temizlenene kadar göstermeye devam eder. Daha fazla ayrıntı için Storage Limits bölümüne bakın.
Dosyanın yolu veya adı da hassas ise, bu eski commitlerde temizlenene kadar kalır. “Rewrite history” işlemi, dosyayı bu commitlerle birlikte kaldırır.
Düzenli git dosyaları
Seçenek 1: git filter-repo ile geçmişi yeniden yazın ve dosyayı içeren her dalı ve etiketi force-push edin. Force-push, yazma erişimine sahip kullanıcılara izin verilir.
git clone https://huggingface.co/<namespace>/<repo> # use /datasets/ or /spaces/ for those repo types
cd <repo>
git filter-repo --invert-paths --path path/to/file
git remote add origin https://huggingface.co/<namespace>/<repo> # filter-repo removes the remote
git push --force --all origin
git push --force --tags origin2. seçenek: dosyayı silin ve geçmişi birleştirin super_squash_history ile. Her çağrı tek bir dalı tek bir commit'e birleştirir, bu yüzden etkilenen her dal için bunu tekrarlayın ve ihtiyaç duymadığınız dalları ve etiketleri silin.
from huggingface_hub import HfApi
api = HfApi()
api.delete_file("path/to/file", repo_id="<namespace>/<repo>")
api.super_squash_history(repo_id="<namespace>/<repo>", branch="main")
api.delete_tag(repo_id="<namespace>/<repo>", tag="v1.0")Çekme istekleri
Bu yalnızca normal git dosyalarına uygulanır: “rewrite history” ile büyük bir dosyayı silmek, pull request’leri zaten yeniden yazar.
Dosya commit edildikten sonra açılan herhangi bir pull request, main yeniden yazılsa veya squash edilse ve PR birleştirilmiş ya da kapatılmış olsa bile, o geçmişi SHA üzerinden erişilebilir tutar. Pull request'in silinmesi bu geçmişi serbest bırakır ve ardından temizlenir.
Yinelenen depolar
Yenilenen depolar bağımsızdır, bu nedenle sahip olduğunuz depoları aynı şekilde temizleyin. Model ve veri seti kopyaları, kopyalama anındaki main dosyalarını (tek bir commit olarak) içerirken, Space kopyaları main'in tam geçmişini korur. Diğer dallar ve etiketler kopyalanmaz.
Eski commit'ler kaybolduğunda
Eski commit'ler, SHA'ları üzerinden (web arayüzünde, API'de ve git fetch <sha> ile) erişilebilir kalmaya devam eder; bu erişilebilirlik, genellikle bir force-push, bir super_squash_history, bir “rewrite history” silme işlemi veya onları koruyan pull request'in silinmesinden yaklaşık bir saat sonra temizlenene kadar sürer.
Bize ne zaman ulaşmalısınız
- 404 döndürmesi kesin olarak garanti edilen eski commit URL'lerine ihtiyacınız var
- Önbelleğe alınmış indirmelerin geçersiz kılınması gerekiyor
- Data Studio Parquet dönüşümleri (
refs/convert/*) veya Space derlemeleri gibi türetilmiş kopyaların sıfırlanması gerekir.