[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^^^