Bitbucket: hapus folder dari riwayat Git

Ada batas keras 2 GB saat hosting Git di Bitbucket - jika ini terlampaui, Anda hanya memiliki akses baca-saja ke repositori. Untuk mencegah hal ini, misalnya, Anda secara surut menghapus folder atau file besar dari komit Anda. Tetapi juga dalam kasus lain (jika data akses telah memasuki sejarah atau node_modules telah tergelincir ke master lagi), Anda harus secara retrospektif memanipulasi sejarah Git yang bertentangan dengan sifatnya.


Bitbucket telah menulis artikel terperinci tentang ini. Untuk membahas seluruh hal dalam satu kasus, pertama-tama kita membuat repositori baru:

riwayat bitbucket bersih

Kemudian kami mengkloning repositori ke folder kosong di komputer lokal:

6ab7686fc508ce87c52b10bb5d01ee51

Sekarang kami membuat dua subfolder dengan file konten acak:

6ab7686fc508ce87c52b10bb5d01ee51

Kami sekarang mendorong master:

6ab7686fc508ce87c52b10bb5d01ee51

Sekarang kita hampir mencapai batas 2 GB pada Bitbucket:

riwayat bitbucket bersih

Kami juga dapat memeriksa ini secara lokal (lihat "paket ukuran"):

6ab7686fc508ce87c52b10bb5d01ee51

riwayat bitbucket bersih

Tugasnya sekarang adalah menghapus "foo" secara retroaktif dari repositori untuk mengurangi separuh ukurannya. Untuk melakukan ini, pertama-tama kita edit HEAD saat ini dan menulis folder di gitignore:

6ab7686fc508ce87c52b10bb5d01ee51

Akhirnya, kami menghapus folder menggunakan BFG Repo Cleaner (BFG membutuhkan JRE saat ini pada sistem sebagai persyaratan sistem):

6ab7686fc508ce87c52b10bb5d01ee51

Kami sekarang melihat hasilnya secara lokal:

6ab7686fc508ce87c52b10bb5d01ee51

riwayat bitbucket bersih

Namun, ukuran repositori belum berubah pada Bitbucket karena pengumpul sampah belum dieksekusi dari jarak jauh dan bitbucket tidak menjalankan "git gc" dengan setiap dorongan:

riwayat bitbucket bersih

Dukungan juga mengkonfirmasi ini:

riwayat bitbucket bersih

Jadi yang terbaik adalah mengirim permintaan langsung ke support@bitbucket.org untuk menjalankan "git gc" secara manual di repositori. Setelah waktu yang singkat, tim pendukung juga melakukan ini:

riwayat bitbucket bersih

Jika sekarang Anda "baru" seret repositori ke komputer lain, hanya 0,9 GB yang akan berakhir di disk. Jika seseorang masih memiliki versi 1.8 GB yang tersedia secara lokal, "git pull" diikuti oleh "git gc" sudah cukup.

Kembali