Pertanyaan Memangkas data biner dari repositori git setelah fakta


Saya tidak sengaja melakukan beberapa data biner besar ke dalam beberapa komit. Sejak itu saya telah memperbarui gitignore saya, dan file-file itu tidak lagi dilakukan. Tapi saya ingin kembali ke commit lama dan secara selektif memangkas data ini dari repositori, menghapus beberapa direktori yang seharusnya ada di. Gitignore. Saya tidak ingin menghapus komit itu sendiri.

Bagaimana saya akan menyelesaikan ini? Metode yang saya sukai adalah beberapa cara untuk menerapkan aturan gitignore secara surut pada komitmen lama ... jawaban yang menggunakan metode ini juga akan sangat berguna bagi orang lain, karena saya yakin masalah saya tidak unik. Ini juga akan cepat diterapkan ke solusi umum, tanpa banyak penyesuaian khusus untuk struktur direktori unik setiap pengguna.

Apakah ini mungkin, baik cara mudah yang saya sarankan di atas, atau dengan cara yang lebih rumit?


32
2017-12-30 18:08


asal


Jawaban:


Solusi dalam jawaban ini bekerja dengan sempurna untuk saya:

Anda juga dapat menguji proses bersih Anda dengan alat seperti bfg repo   pembersih, seperti dalam jawaban ini:

java -jar bfg.jar --delete-files *.{jpg,png,mp4,m4v,ogv,webm} ${bare-repo-dir};

(Kecuali BFG memastikan itu tidak menghapus apa pun di terbaru Anda   komit, sehingga Anda perlu menghapus file-file dalam indeks saat ini dan   membuat komitmen "bersih". Semua komitmen sebelumnya akan dibersihkan oleh   BFG)


11
2017-11-18 22:54