Saya sedang mengerjakan repositori di akun GitHub saya dan ini adalah masalah yang saya temui.
- Proyek Node.js dengan folder dengan beberapa paket npm diinstal
- Paket-paket itu ada di
node_modules
folder - Menambahkan folder itu ke git repositori dan mendorong kode ke github (tidak memikirkan bagian npm pada waktu itu)
- Menyadari bahwa Anda tidak benar-benar membutuhkan folder itu untuk menjadi bagian dari kode
- Menghapus folder itu, mendorongnya
Pada saat itu, ukuran total repo git sekitar 6MB di mana kode aktual (semua kecuali folder itu) hanya sekitar 300 KB .
Sekarang apa yang saya cari pada akhirnya adalah cara untuk menghilangkan rincian folder paket itu dari sejarah git jadi jika seseorang mengkloningnya, mereka tidak perlu mengunduh sejarah senilai 6MB di mana satu-satunya file aktual yang akan mereka dapatkan pada komit terakhir adalah 300KB.
Saya mencari solusi yang mungkin untuk ini dan mencoba 2 metode ini
- Hapus file dari repositori git (histori)
- http://help.github.com/remove-sensitive-data/
- https://gist.github.com/1588371
Intisari sepertinya berfungsi di mana setelah menjalankan skrip, itu menunjukkan bahwa ia menyingkirkan folder itu dan setelah itu menunjukkan bahwa 50 komit yang berbeda dimodifikasi. Tapi itu tidak membiarkan saya mendorong kode itu. Ketika saya mencoba untuk mendorongnya, katanya Branch up to date
tetapi menunjukkan 50 komit diubah pada a git status
. 2 metode lainnya juga tidak membantu.
Sekarang meskipun itu menunjukkan bahwa itu menghilangkan sejarah folder itu, ketika saya memeriksa ukuran repo itu di localhost saya, itu masih sekitar 6MB. (Saya juga menghapus refs/original
folder tetapi tidak melihat perubahan dalam ukuran repo).
Apa yang ingin saya klarifikasi adalah, jika ada cara untuk menyingkirkan tidak hanya komit histori (yang merupakan satu-satunya hal yang saya pikir terjadi) tetapi juga file-file git tetap dengan asumsi seseorang ingin mengembalikan.
Katakanlah solusi yang disajikan untuk ini dan diterapkan di localhost saya tetapi tidak dapat direproduksi ke repo GitHub, apakah mungkin untuk mengkloning repo itu, kembalikan ke komit pertama melakukan trik dan mendorongnya (atau apakah itu berarti bahwa git akan masih memiliki riwayat semua komit itu - alias 6MB).
Tujuan akhir saya di sini adalah untuk pada dasarnya menemukan cara terbaik untuk menyingkirkan isi folder dari git sehingga pengguna tidak harus mengunduh barang senilai 6MB dan masih mungkin memiliki komitmen lain yang tidak pernah menyentuh folder modul (itu cukup kebanyakan dari mereka) dalam sejarah git.
Bagaimana saya bisa melakukan ini?