GNU/Linux >> Linux の 問題 >  >> Linux

git gc:利用可能な 3GB と tmp_pack が 16MB しかないにもかかわらず、デバイスに空き容量がありません

.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 を実行します。


Linux
  1. 自分だけのアドレス空間レイアウトのランダム化を無効にして再度有効にする

  2. make でコンパイルできません |致命的なエラー デバイスにスペースが残っていません

  3. デバイスにスペースが残っていませんが、パーティションは半分しか使用されておらず、inode は使用可能です

  1. その特定の OS とデバイスでのみ復号化できる Linux 上の暗号化フォルダー

  2. AWS EC2 - デバイスに空き容量がありません

  3. 接続時に使用できるバッファ スペースがありません

  1. gcloud に永続ストレージを追加した後でも、デバイスに空き容量がありません

  2. 共有メモリ:shmget が失敗します:デバイスにスペースが残っていません -- 制限を増やす方法は?

  3. デバイスにスペースが残っていない他の理由はありますか?