Railsアプリを開発中に、GitHubにプッシュできなくなりました。
GitHubに100MB制限があることを知らず、少し苦戦しましたので備忘録として。
##エラー
いつもどおり、git add
git comit
git push
と進めるとエラーが出ました。
development.logが100MBを超えてますよ、ということです。
・・・
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: 13ec04b062a0cd9bb1a20e6a0b921ec7cf7396c0
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File log/development.log is 150.13 MB; this exceeds GitHub's file size limit of 100.00 MB
・・・
100MB超ファイルをアップする方法もあるようですが、今回はLogファイルだったので削除する方針で進めます。
100MB超ファイルをプッシュする方法(参考)
https://qiita.com/kanaya/items/ad52f25da32cb5aa19e6
##解決手順
- 巨大ファイルのコミットを取り消す
- 巨大ファイルを削除(Gitから除外)
- 再度コミット
- 再度プッシュ
##1.巨大ファイルのコミットを取り消す
直前のコミットであればこれで取り消せます。
$ git reset --hard HEAD
直前ではないときは、該当するリビジョンを調べてその1個前まで戻ります。
$ git log
コミット履歴がズラッと出るので、該当リビジョンを確認
commit 13ec04b062a0cd9bb1a20e6a0b921ec7cf7396c0
↑これが該当リビジョンの1個前
$ git reset --soft 13ec04b062a0cd9bb1a20e6a0b921ec7cf7396c0
これで巨大ファイルのコミットの前に戻りました。
##2.巨大ファイルを削除(Gitから除外)
単純に巨大ファイルを削除(中身を空に)してもよいのですが、Railsの仕様上いずれまた100MBを超えることになるのでGitから除外します。
####.gitignoreでGitから除外する
.gitignoreに除外ファイルを追加します。
/log/development.log
.gitignore 書き方(参考)
https://qiita.com/inabe49/items/16ee3d9d1ce68daa9fff
最初から除外したほうが楽
このツールで、各言語に最適化された.gitignoreがゲットできます。
https://www.toptal.com/developers/gitignore
##3.再度コミット
あとはいつもどおりと言いたいところですが、ちゃんと除外されているか確認しましょう。
自分はここで何度もやり直しました。
####除外してもコミットされてしまうときは
Gitのキャッシュが残っている場合は、こちらを参考にキャッシュを削除してください。
(ちなみにVS CODEだと、除外ファイルはグレーアウトされます。)
https://qiita.com/fuwamaki/items/3ed021163e50beab7154
##4.再度プッシュ
最後にプッシュすればコンプリートです!