Bitbucket: hapus folder dari sejarah Git

Terdapat had 2 GB yang sukar ketika mengehoskan Git di Bitbucket - jika melebihi, anda hanya mempunyai akses baca sahaja ke repositori. Untuk mengelakkan perkara ini, misalnya, anda secara retroaktif mengeluarkan folder besar atau fail dari komit anda. Tetapi juga dalam kes lain (jika data akses telah memasuki sejarah atau node_modules tergelincir ke induk lagi), anda harus memanipulasi sejarah Git secara retrospektif yang bertentangan dengan sifatnya.


Bitbucket telah menulis artikel terperinci mengenai perkara ini. Untuk menyelesaikan semuanya dalam satu kes, pertama kami membuat repositori baru:

sejarah bitbucket bersih

Kemudian kami mengkloning repositori ke folder kosong di mesin tempatan:

6ab7686fc508ce87c52b10bb5d01ee51

Sekarang kita membuat dua subfolder dengan fail kandungan rawak:

6ab7686fc508ce87c52b10bb5d01ee51

Kami sekarang mendorong tuan:

6ab7686fc508ce87c52b10bb5d01ee51

Sekarang kami hampir mencapai had sukar 2 GB di Bitbucket:

sejarah bitbucket bersih

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

6ab7686fc508ce87c52b10bb5d01ee51

sejarah bitbucket bersih

Tugasnya sekarang adalah secara retroaktif mengeluarkan "foo" dari repositori untuk mengurangkan separuh ukurannya. Untuk melakukan ini, pertama-tama kita mengedit HEAD semasa dan menulis folder di gitignore:

6ab7686fc508ce87c52b10bb5d01ee51

Akhirnya, kami menggunakan BFG Repo Cleaner untuk membuang folder (BFG memerlukan JRE semasa pada sistem sebagai keperluan sistem):

6ab7686fc508ce87c52b10bb5d01ee51

Kami kini melihat hasilnya secara tempatan:

6ab7686fc508ce87c52b10bb5d01ee51

sejarah bitbucket bersih

Walau bagaimanapun, ukuran repositori belum berubah pada Bitbucket kerana pengumpul sampah belum dilaksanakan dari jauh dan bitbucket tidak menjalankan "git gc" dengan setiap tolakan:

sejarah bitbucket bersih

Sokongan juga mengesahkan ini:

sejarah bitbucket bersih

Oleh itu, lebih baik anda menghantar permintaan terus ke support@bitbucket.org untuk menjalankan "git gc" secara manual di repositori. Setelah sekian lama, ini juga dilakukan oleh pasukan sokongan:

sejarah bitbucket bersih

Sekiranya anda sekarang "baru" menyeret repositori ke komputer lain, hanya 0.9 GB akan berakhir pada cakera. Sekiranya seseorang masih mempunyai versi 1.8 GB yang tersedia secara tempatan, "git pull" diikuti oleh "git gc" sudah mencukupi.

Belakang