Saat menghosting Git di Bitbucket, ada batas keras 2 GB - jika terlampaui, Anda hanya memiliki akses hanya baca ke repositori. Untuk mencegahnya, misalnya, Anda dapat secara retrospektif menghapus folder atau file besar dari komit Anda. Tetapi juga dalam kasus lain (jika data akses telah memasuki sejarah atau node_modules telah tergelincir kembali ke master) Anda harus memanipulasi sejarah Git secara retrospektif, bertentangan dengan sifatnya.
Bitbucket telah menulis artikel mendetail tentang ini sendiri. Untuk menjalankan semuanya pada sebuah kasus, pertama-tama kita membuat repositori baru:
Kemudian kami mengkloning repositori ke folder kosong di mesin lokal:
6ab7686fc508ce87c52b10bb5d01ee51
Sekarang kami membuat dua sub-folder dengan file konten acak:
6ab7686fc508ce87c52b10bb5d01ee51
Kami sekarang mendorong master:
6ab7686fc508ce87c52b10bb5d01ee51
Sekarang kami hampir mencapai batas keras 2 GB di Bitbucket:
Kami juga dapat memeriksanya secara lokal (lihat "ukuran-paket"):
6ab7686fc508ce87c52b10bb5d01ee51
Tugas sekarang adalah menghapus "foo" secara retroaktif dari repositori untuk memotong ukurannya menjadi dua. Untuk melakukan ini, pertama-tama kita mengedit HEAD saat ini dan menulis foldernya ke gitignore:
6ab7686fc508ce87c52b10bb5d01ee51
Terakhir, kami menghapus folder dengan bantuan BFG Repo Cleaner (BFG memerlukan JRE saat ini pada sistem sebagai persyaratan sistem):
6ab7686fc508ce87c52b10bb5d01ee51
Kami sekarang dapat melihat hasilnya secara lokal:
6ab7686fc508ce87c52b10bb5d01ee51
Tetapi di Bitbucket, ukuran repositori belum berubah, karena pengumpul sampah belum dieksekusi dari jarak jauh dan bitbucket tidak mengeksekusi "git gc" dengan setiap dorongan:
Ini juga dikonfirmasi oleh dukungan:
Jadi yang terbaik adalah mengirim permintaan langsung ke support@bitbucket.org untuk menjalankan "git gc" secara manual di repositori. Setelah beberapa saat, hal ini juga dilakukan oleh tim pendukung:
Jika Anda "baru" memindahkan repositori ke komputer lain, hanya 0,9 GB yang akan masuk ke disk. Jika seseorang memiliki versi 1,8 GB yang tersedia secara lokal, "git pull" diikuti dengan "git gc" sudah cukup.