Hub documentation

Menghapus Data Sensitif dari Repositori

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Menghapus Data Sensitif dari Repositori

Halaman ini hanya berlaku untuk repositori berbasis git (model, dataset, dan Spaces).

Jika Anda pernah meng-commit rahasia, data pribadi, atau file apa pun yang tidak ingin ada di Hub, menghapusnya dalam commit baru saja tidak cukup: commit yang lebih lama masih memuatnya, dan URL seperti /resolve/<old_sha>/<path>, /blob/<old_sha>/<path> atau /commit/<old_sha> tetap menyajikannya. Untuk menghapus file sepenuhnya, hapus dari setiap ref yang dapat mencapainya: branches, tags, dan pull requests.

Jika file tersebut berisi rahasia (token, API key, password), cabut atau rotasikan terlebih dahulu dan anggap telah terkompromi: salinan yang di-cache oleh CDN atau diunduh oleh pengguna mungkin bertahan lebih lama daripada penghapusannya. Untuk token Hugging Face, lihat Revoking a leaked token.

Ikhtisar

AksiMenghapusDaun
Hapus file dalam commit baruBerkas dari revisi terbaruSemua commit sebelumnya, jadi tidak cukup dengan sendirinya
Daftarkan File Besar → hapus dengan “rewrite history”Konten file (seketika), dan pointer-nya dari semua cabang, tag, dan referensi PRCommit lama dengan path file, sha256, dan ukuran, sampai dibersihkan
git filter-repo + force-pushFile dari setiap branch dan tag yang Anda pushRefs yang tidak Anda push, riwayat yang dikunci oleh pull request
super_squash_historyRiwayat satu cabangCabang lain, tag, riwayat yang dipatok oleh pull request
Hapus pull requestReferensi PR, riwayat rilis hanya itu yang dipertahankanRiwayat tersebut, sampai pembersihan

Menulis ulang riwayat (setiap opsi selain commit baru) bersifat tidak dapat dibatalkan dan mengubah SHA commit. Kolaborator yang menggunakan git harus melakukan re-clone, atau mereset cabang mereka ke cabang yang telah ditulis ulang, dan tidak boleh mendorong riwayat lama mereka kembali, karena hal itu akan memperkenalkan kembali file tersebut.

Urutan yang disarankan

  1. Cabut atau putar ulang rahasia yang bocor.
  2. Hapus file LFS dan Xet dengan “rewrite history”.
  3. Hapus file git reguler dari setiap branch dan tag.
  4. Untuk file git biasa, hapus pull requests yang dibuka setelah file tersebut di-commit.
  5. Bersihkan repositori duplikat yang Anda miliki.
  6. Hubungi kami jika diperlukan.

File LFS dan Xet

Jika file tersebut muncul di “List Large Files” (Daftar File Besar) di repositori Anda (termasuk file yang didukung Xet):

  1. Buka halaman Pengaturan di repositori Anda.
  2. Klik “List Large Files” di bagian “Storage”.
  3. Hapus file, dengan opsi “rewrite history” tetap dicentang (default).

Menghapus file besar dengan “rewrite history” langsung menghapus isinya dan menghilangkan pointer-nya dari setiap branch, tag, dan PR ref. Hal ini mengubah SHA dari commit pertama yang berisi file tersebut dan semua keturunannya, serta menghapus commit yang menjadi kosong (misalnya commit yang hanya menambahkan file tersebut). Commit lama masih menampilkan path, sha256, dan ukuran file sampai dibersihkan. Lihat Batas Penyimpanan untuk detail lebih lanjut.

Jika path atau nama file tersebut bersifat sensitif, file itu tetap ada di commit lama tersebut sampai dibersihkan. “Rewrite history” akan menghapusnya bersama commit lama tersebut.

File git reguler

Opsi 1: tulis ulang riwayat dengan git filter-repo dan lakukan force-push ke setiap branch dan tag yang berisi file tersebut. Force-push diizinkan untuk pengguna dengan akses tulis.

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 origin

Opsi 2: hapus file dan padatkan riwayat dengan super_squash_history. Setiap pemanggilan memadatkan satu cabang menjadi satu commit, jadi ulangi untuk setiap cabang yang terdampak dan hapus cabang serta tag yang tidak Anda butuhkan.

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")

Pull request

Hal ini hanya berlaku untuk file git biasa: menghapus file besar dengan “rewrite history” sudah menuliskan ulang pull request.

Setiap pull request yang dibuka setelah file di-commit tetap menjaga riwayat tersebut dapat diakses melalui SHA, bahkan setelah Anda menulis ulang atau melakukan squash pada main, dan bahkan jika PR tersebut digabungkan atau ditutup. Menghapus pull request akan membebaskan riwayat tersebut, yang kemudian dibersihkan.

Repositori yang diduplikasi

Repositori duplikat bersifat independen, jadi bersihkan milik Anda dengan cara yang sama. Duplikat model dan dataset hanya berisi file dari main pada saat duplikasi (sebagai satu commit), sedangkan duplikat Space mempertahankan riwayat lengkap main. Branch dan tag lainnya tidak disalin.

Saat commit lama hilang

Commit lama tetap dapat diakses melalui SHA-nya (di antarmuka web, API, dan dengan git fetch <sha>) sampai dibersihkan, yang biasanya terjadi dalam waktu sekitar satu jam setelah force-push, super_squash_history, penghapusan “rewrite history”, atau penghapusan pull request yang menjaganya.

Kapan harus menghubungi kami

  • Anda memerlukan URL commit lama yang dijamin mengembalikan 404
  • Anda perlu mengunduh cache yang tidak valid
  • Anda perlu menyetel ulang salinan turunan, seperti konversi Parquet Data Studio (refs/convert/*) atau build Space
Update on GitHub