.git/objects/pack
に隠された '.tmp-XXXX-pack' に関するドキュメントは見つかりませんでした。 フォルダ。私が見つけることができる他のすべてのスレッドは、非表示に関するものです tmp_
のファイル 同じフォルダー内のプレフィックス。非表示のものもリパック アクション中に明確に作成され、これらもスタックする可能性があります。それが git 2.3.0 (それ以降に更新した) でまだ可能かどうかは確認できませんが、少なくともこの新しいバージョンではディスク容量の要件は変わっていないようです - まだ gc を完了できません/再梱包。これらの .tmp ファイルを削除することで、最後の 4GB を復元できました。その後も git は正常に動作しているようです。ただし、結果は異なる場合があるため、これを行う前にバックアップがあることを確認してください .最後に、gc --agressive
で再パックするには 4GB でも十分ではありませんでした .私の .git
フォルダーはクリーンアップ後に 1.1GB であり、リポジトリ全体は 1.7GB です。したがって、リポジトリのサイズの 2 倍では、git gc
にはおそらく十分ではありません 、積極的なオプション(スペースを節約する必要があります)を使用しても。そのため、最初に他の場所からより多くのスペースを回復する必要がありました。
最後に、クリーンアップ スクリプトの内容を次に示します (これは、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-*
git gc
以外は同様のシナリオ (約 2.3G 利用可能) それ自体も fatal: Unable to create '/home/ubuntu/my-app-here/.git/gc.pid.lock': No space left on device
で失敗します
うまくいったのは git prune
でした まず、GC を実行します。