Gitでバイナリファイルを扱ってしまい容量が増えてしまったときの対策
Gitの容量を軽くする術
Gitで便利ですよね。しかし、つい画像や動画も一緒にいれていまうと、リポジトリの容量がふえてしまいます。
そこで、もし画像や動画を入れてしまいリポジトリの容量が大変なことになってしまったときのTipsを紹介したいと思います。
結論
- Gitではバイナリファイルを管理しない
- Git LFS(Large File Storage)を使う
Gitでバイナリファイルはどう扱われるのか
- Gitではバイナリファイルの差分は管理出来ない
- コミットするたびに新しいファイルが追加されたと認識される
- コミットごとに対象ファイルの差分履歴が倍になる
Gitリポジトリを軽くする
ガーベッジコレクション
$ git gc
- Gitのガーベッジコレクションを実行するコマンド
- 不要なファイルを削除してくれる
ファイルの履歴を削除する
$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch (filename)' HEAD
- 大きなファイルのコミット履歴を過去まで遡りなかったことにする
- ファイルはコミットされなかった
- 上記のコマンドではHEADに対して実行。--allで過去すべてに対して実行
- '(各コミットに対して実行したいコマンド)'
注意点
- --allでは過去すべてが書き換えられるので、--force pushでリモートを強制書き換え
- 過去改ざん実行後はcloneをやり直す
- 詳しい用法容量はきちんと調べる(自己責任で)
Git LFSを利用する
- 今回は調査対象外
- 大きなファイルは別のストレージサービスに格納し、Gitではそのファイルへのパスを管理する