Jadi inilah yang saya temukan sejauh ini:Saya tidak dapat menemukan dokumentasi apa pun tentang '.tmp-XXXX-pack' tersembunyi ini di .git/objects/pack
map. Semua utas lain yang dapat saya temukan adalah tentang tidak tersembunyi file dengan tmp_
awalan dalam folder yang sama. Yang tersembunyi juga dibuat dengan jelas selama tindakan pengemasan ulang dan mungkin saja ini macet juga. Saya tidak dapat mengonfirmasi apakah itu masih mungkin di git 2.3.0 (yang telah saya perbarui sejak saat itu), tetapi setidaknya persyaratan ruang disk tampaknya tidak berubah dalam versi yang lebih baru ini - masih belum dapat menyelesaikan gc / dikemas ulang. Dengan menghapus file .tmp ini, saya dapat memulihkan 4GB terakhir saya dan git tampaknya masih berfungsi dengan baik setelahnya - hasil Anda mungkin berbeda, jadi harap pastikan Anda memiliki cadangan sebelum melakukan ini . Akhirnya, bahkan 4GB tidak cukup untuk dikemas ulang dengan gc --agressive
. .git
saya folder adalah 1,1GB setelah pembersihan, seluruh repositori saya adalah 1,7GB. Jadi 2x ukuran repositori Anda mungkin tidak cukup untuk git gc
, bahkan dengan opsi agresif (yang seharusnya menghemat ruang). Jadi saya harus memulihkan lebih banyak ruang dari tempat lain terlebih dahulu.
Akhirnya, inilah yang saya miliki di skrip pembersihan saya sekarang (yang menurut saya mungkin merupakan ide bagus untuk menelepon dari tugas cron):
#!/bin/bash
set -e
#git gc or remove tmp if that fails (because out of disk space)
git gc --aggressive --prune=now || rm -f .git/objects/*/tmp_* && rm -f .git/objects/*/.tmp-*
Skenario serupa (sekitar 2.3G tersedia), kecuali git gc
itu sendiri juga akan gagal dengan fatal: Unable to create '/home/ubuntu/my-app-here/.git/gc.pid.lock': No space left on device
Yang berhasil adalah git prune
terlebih dahulu, lalu jalankan gc.