GNU/Linux >> Belajar Linux >  >> Linux

git gc:tidak ada ruang tersisa di perangkat, meskipun tersedia 3GB dan tmp_pack hanya 16MB

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.


Linux
  1. Git dan tautan keras

  2. Nonaktifkan dan aktifkan kembali pengacakan tata letak ruang alamat hanya untuk saya sendiri

  3. Tidak ada ruang tersisa di perangkat

  1. Tidak dapat dikompilasi dengan make | kesalahan fatal Tidak ada ruang tersisa di perangkat

  2. Cantumkan hanya nama perangkat dari semua antarmuka jaringan yang tersedia

  3. Tidak ada ruang tersisa di perangkat, tetapi partisi hanya setengah penuh dan inode tersedia

  1. Enkripsi folder di Linux yang hanya dapat didekripsi di OS dan perangkat tertentu

  2. AWS EC2 - Tidak Ada Ruang Tersisa di Perangkat

  3. Tidak ada ruang buffer yang tersedia saat terhubung