Saya membuat kesalahan besar.
Saya membuat repo dengan beberapa file. Saya membuat beberapa komitmen, semuanya bekerja dengan baik. Tapi kemudian saya menyadari, 2 file memiliki kesalahan yang sangat besar, yang membuat mereka berukuran sekitar 200 Mb, padahal seharusnya sekitar 2 Mb (tidak bercanda). Mereka berada di root commit. Saya berhasil mengubah komit root dengan file yang tepat, tetapi repo saya masih sekitar 500 Mb, yang membuatnya sangat sulit untuk dikelola. Jika saya reset ke root commit, file-file itu adalah file yang tepat.
Saya belum mendorong repo pusat karena ini. Hanya perlu selamanya untuk mengunggah 500 MB.
Jadi, saya bertanya-tanya bagaimana saya bisa menghapus file-file 200Mb dari repo, bahkan jika mereka tidak lagi dalam komit. Perintah mana yang harus saya gunakan? Haruskah saya menghapus file gumpalan terbesar? Apakah saya gila? Apakah saya membuat sesuatu yang benar-benar salah?
Terima kasih. Saya benar-benar terburu-buru.
[MEMPERBARUI]
Saya sudah menjalankan git gc, tetapi hanya mengurangi sekitar 40 Mb. Saya pikir file-file jahat itu masih ada, jadi saya tidak yakin apa yang harus dilakukan.
git gc
akhirnya menghapus file-file itu?Jawaban:
Cara termudah untuk mengecilkan repo lokal Anda (tidak diperlukan untuk mendorong, seperti yang dikatakan Micheal Anderson dengan benar) adalah pergi ke dir dan lari yang berbeda
git clone /path/to/your/repo
. Repo baru ini seharusnya kecil sekarang - lanjutkan pekerjaan Anda di sana.sumber
Untuk memangkas file dari riwayat repo yang dapat Anda gunakan
git filter-branch
. Namun ini hanya menghapus file dari semua pohon, Anda mungkin masih memiliki konten file duduk dalam gumpalan di dalam cache objek git. Anda dapat membersihkannya menggunakangit gc
.Namun Anda tidak perlu khawatir tentang gumpalan yang tidak terpasang itu didorong ke repo utama, karena hanya gumpalan yang melekat pada pohon komit yang Anda dorong untuk dikirim ke server lain.
Jika Anda sudah mendorong file besar maka membersihkan gumpalan yang tidak diikat pada repo jarak jauh lebih sulit. Lihat https://stackoverflow.com/questions/3162786/how-to-do-git-gc-on-git-remote-repoteory
sumber