状況
-
git clone
をして検証したいブランチを反映している。 - 検証環境でディスクの空き容量が足りなくなり「No space left on device」が発生する。
- 不要なログ、ファイルを削除しても解消されない。
試したこと
- 容量の重いファイルを
du -m
コマンドを使って探していく。 - プロジェクトディレクトリの
.git/objects
の容量が大きくなっていることを確認
.git/objects
って何してるの?
- リポジトリにあるファイルの差分や履歴を管理しているオブジェクト
- コミットが多くなると容量は肥大化していく
- 容量の大きいファイルをコミットした場合なども容量が大きくなるため危険
解決策
- Shallow Clone
- 検証環境では、毎回クローンしなおしていたので、
git clone
時に--depth
のオプションをつけることでクローンするときに、どこまでログを遡って取得するかを指定する。 -
git log
で変更ログを確認したい場合は、クローン時に指定したところまでしか確認できないので注意 - 今回は検証環境で変更ログを確認することもないため
1
を指定する。
git clone --depth 1
- 検証環境では、毎回クローンしなおしていたので、
他にも
あまり使うことはないかもしれませんが、他にも.git/objects
を軽量化したい場合の方法を紹介します。
- リポジトリを作り直す
-
git filter-branch
コマンドを使って指定したファイルのログを削除する。- 大きいファイルを間違ってコミットしてしまった場合とかは良いかも