Git

[Git]制限のある100MG以上のプッシュをしてしまって、プッシュができなくなった場合

起こったこと

Unityでそこそこサイズのでかいものをインポートしたり、そのアセットを使ったりして、一区切りついたしプッシュするかって思ってプッシュしたら、エラーが出た。
ファイルサイズの大きいものがありますよっていう部分は、僕の場合はこの二つがあった。

remote: warning: File Assets/MyAssets/Subway Set/Textures/RubbleNormalsMap.tga is 64.00 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
とか、
remote: error: File Library/metadata/18/18ec2d52be8f4524a97c25a2ed27838e is 128.01 MB; this exceeds GitHub's file size limit of 100.00 MB

制限以上のプッシュしてしまったって思ってローカルのファイルを削除しても意味がないのでエラーは変わらない。でかいサイズをプッシュしようとした履歴が残ってしまうのが原因。

解決方法

~簡単にまとめると~
1. ローカルで問題のあるフォルダを削除
2. addしてcommit
3. 以下のコマンドを入力
4. 3.push

~詳しく~
エラー文の中にいくつか「remote:~」と表示されると思うが、サイズをオーバーしてますよって書いてある行だけを注目しましょう。
僕の場合は二か所ありました。

上記のエラー文の中での、
「Assets/MyAssets/Subway Set/Textures/RubbleNormalsMap.tga」

「Library/metadata/18/18ec2d52be8f4524a97c25a2ed27838e」
の部分がその問題のあるディレクトリです。(僕の場合)

以下のコマンドを入力しましょう。

git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch 問題のあるディレクトリ" --prune-empty -- --all

僕は二つあったので、二回このコマンドを入力しました。
コマンドを打つとRewrite~と出る。出た後にWARNING~といくつか出るが気にしなくていい。

後は、addしてプッシュ

これで、プッシュできました。

感想

プッシュできるファイルサイズの制限があることは知っていたのですが自分がこの問題に遭遇することは今までなかったので、解決に少し時間がかかりました。
今度からこまめにプッシュするように意識する、インポートしたアセットのサイズを気を付ける、
この二つは忘れないようにしようと思いました。