Takže tady je to, co jsem zatím zjistil:nemohl jsem najít žádnou dokumentaci o těchto skrytých '.tmp-XXXX-pack' v .git/objects/pack
složku. Všechna ostatní vlákna, která jsem našel, se týkají neskrytých soubory s tmp_
prefix ve stejné složce. Skryté jsou také jasně vytvořeny během akce přebalení a je možné, že se také zaseknou. Nemohu potvrdit, zda je to stále možné v git 2.3.0 (na který jsem od té doby aktualizoval), ale alespoň se zdá, že požadavky na místo na disku se v této novější verzi nezměnily - stále nemůže dokončit gc /přebalit. Smazáním těchto .tmp-souborů se mi podařilo obnovit mé poslední 4GB a zdá se, že git se poté stále chová dobře – vaše výsledky se však mohou lišit, takže před tím se prosím ujistěte, že máte zálohu . Nakonec ani 4 GB nestačily na přebalení pomocí gc --agressive
. Můj .git
složka je po vyčištění 1,1 GB, celé mé úložiště má 1,7 GB. Takže 2x velikost vašeho úložiště možná nestačí pro git gc
, a to i s agresivní možností (což by mělo šetřit místo). Takže jsem musel nejprve získat více místa odjinud.
Nakonec zde je to, co mám nyní ve svém čistícím skriptu (což by podle mě mohl být dobrý nápad zavolat z úlohy 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-*
Podobný scénář (k dispozici přibližně 2,3G), kromě git gc
sám by také selhal s fatal: Unable to create '/home/ubuntu/my-app-here/.git/gc.pid.lock': No space left on device
To, co fungovalo, bylo git prune
nejprve a poté spusťte gc.