🌊

ガーベジ・コレクション失敗時の一時ファイルを削除 / Git操作小ネタ

2023/08/23に公開

概要

  • 大きなリポジトリを使っていると、git gcの処理も遅く、一時ファイルも大きくなる
  • それによってgit gcがストレージ不足で失敗するケースも存在する
  • git gcの中断によって発生するゴミファイルは自動で消えることはないため、自主的に掃除する必要がある

Sample

# 不要ファイルを探す
cd <repository-path>
find .git/ -iname "*tmp_pack*" -print0| xargs -0 du -sh

# 不要ファイルを直接削除する
cd <repository-path>
find .git/ -iname "*tmp_pack*" -print0| xargs -0 rm

補足

git gcを行っている場合は次のようなファイルが存在する。.git/objects/pack/tmp_pack_AbCdEfg
このファイルは削除しても問題ない。

このtmpファイルはgit gc --pruneの操作でも削除されずずっと残ってしまう。大規模なリポジトリを使っていると気づかないうちにファイルが溜まってしまい、.git容量を圧迫するケースがあるので要注意。

参考リンク

https://www.reddit.com/r/git/comments/324ejz/can_i_safely_delete_tmp_pack_files_in/

Discussion