GitHubでUnityを使ってるとGH001: Large files detected. You may want to try Git Large File Storageのエラーに出くわすことがあり、その度に「どうするんだっけ」となるのでメモがてらまとめておきます。
解決するまでの流れ
- 「GH001: Large files detected. You may want to try Git Large File Storage」のエラーにぶつかる。
-
git reset --soft HEAD^
やgit log
->git reset --soft コミット番号
を使って100MBを超えたファイルをcommitする前の状態まで戻る。 -
git reset HEAD 100MBを超えたファイルのパス
で100MBを超えたファイルのaddを取り消す。1 - .gitignoreに100MBを超えたファイルのパスを書き込んで、今後追跡されないようにする。
git add .
git commit -m "コミットメッセージ。"
git push
中身
こちらのサイトを参考にしながら、流れを見ていきます。
エラーにぶつかる前
エラーにぶつかる前のワーキングツリー、インデックス、HEADは次のようになっています。
100MBを超えたファイルの追加
作業によって、ワーキングツリーに100MBを超えたファイルが含まれてしまいます。
git add & git commit
エラー発生
この状態でpushをすると、100MBを超えたファイルを含んだ状態でpushをすることになるので、エラーが出ます。
HEADを戻す
git reset --soft HEAD^
やgit log
-> git reset --soft コミット番号
を使ってHEADを前回のcommit状態まで移動させることで、100MBを超えたファイルが含まれていない状態に戻します。
addを取り消す
git reset HEAD 100MBを超えたファイルのパス
を使うことでHEADをHEADの位置(そのまま)に、インデックスをHEADの位置に移動させて100MBを超えたファイルのaddだけ取り消します。
.gitignoreに追記
.gitignoreに100MBを超えたファイルのパスを書き込むことで、今後100MBを超えたファイルの情報が追跡されないようにします。
git add
.gitignoreに100MBを超えるファイルを追加してからaddするので、100MBを超えるファイルを含んでいない状態になります。
git commit & git push
この状態であれば、commitしてpushしてもエラーは起きません。
参考資料
-
git reset HEAD^ 100MBを超えたファイルのパス
を使えば2と3のプロセスを簡略化できそうですが、実際はエラーが解消されないので注意です。 ↩