[GIT] 大容量ファイルを含んだリポジトリの扱いについて
githubには、データ容量制限があります。
・1ファイルあたりの最大容量 : 50MB
・ブラウザでのアップロードファイルサイズ : 25MB
動画ファイルや音声ファイル、docsに格納する素材などに格納する様々なコンテンツデータは、軽く50MBを超えるものが入りやすいです。
仕事で扱う場合はなかなか都度のコントロールがし辛いので、後からコントロールする方法を備忘録しておきます。
Git LFSの導入
参考 : https://docs.github.com/ja/repositories/working-with-files/managing-large-files/about-git-large-file-storage これを導入すると、1ファイルあたり、free版で、2GBまで扱えるようになります。インストール(mac/brew)
brew install git-lfs
初期化
git lfs install
追跡ファイルの設定
git lfs track "*.mp4"
※ここに.*zipや*.isoなど大きめのファイルになりえるものを登録しておきます。
コミット
git add .gitattributes
git commit -m "Git LFS"
プッシュ
git lfs push --all origin
大容量データの削除方法(過去のコミット含む)
git reflog expire --expire=now --all && git gc --prune=now --aggressive
参考 : https://rtyley.github.io/bfg-repo-cleaner/
sample.mp4を削除
git filter-branch -f --tree-filter 'rm -f sample.mp4' HEAD
参考 : https://qiita.com/waniwaninowani/items/73b0b5e3f8223b27bbab
この方法だけだと、消しきれない。
sample.mp4を削除2
git filter-branch -f --index-filter 'git rm --ignore-unmatch sample.mp4' --tag-name-filter 'cat' -- --all
参考 : https://livingdead0812.hatenablog.com/entry/2019/10/18/180033
ファイルが全て削除されるので、ファイルを一旦退避しておいて、履歴から消した後で追加作業をするといいかも。
※もっといい方法があるかもね。
LFSに登録したファイルを追加する
git add -f ファイルパス
関連情報
いろいろやりくりしているコマンド備忘録3つ前までのコミットを打ち消す
git reset --hard HEAD^^^