Bitbucket: Hapus folder dari riwayat Git

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:

sejarah bitbucket bersih

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:

sejarah bitbucket bersih

Kami juga dapat memeriksanya secara lokal (lihat "ukuran-paket"):

6ab7686fc508ce87c52b10bb5d01ee51

sejarah bitbucket bersih

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

sejarah bitbucket bersih

Tetapi di Bitbucket, ukuran repositori belum berubah, karena pengumpul sampah belum dieksekusi dari jarak jauh dan bitbucket tidak mengeksekusi "git gc" dengan setiap dorongan:

sejarah bitbucket bersih

Ini juga dikonfirmasi oleh dukungan:

sejarah bitbucket bersih

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:

sejarah bitbucket bersih

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.

Kembali