GitHubにpush
しようとしたときに以下のエラーが出ることがあります。
this exceeds GitHub's file size limit of 100.00 MB
100MB以上のファイルをpush
しようとしているのが原因です。
GitHubでは100MB以上のファイルを扱うことができません。
状況によって対応方法が変わってきます。
100MB以上のファイルをgitの管理からはずしても問題ない場合
100MB以上のファイルをコミットから除去することで解決できます。
以下のコマンドで100MB以上のファイルのコミットを確認することができます。
git log -p XXXX(対象ファイル名)
対象コミットによって対応方法が変わります。
対象のコミットが直前のコミットのとき
--amend
というコマンドを利用することで直前のコミットに変更を加えることができます。
↓のサイトに書かれている手順に従ってください。
これ以上説明することがありません。
qiita.com
対象のコミットが2つ以上前のコミットのとき
--amend
コマンドが直前のコミットしか変更できないので、rebase
を使用します。
対象コミットが何個前にあるかを確認します。
$ git log --oneline
01d06e1 7章の修正
14dc8dd 7章resultファイル
d0f15a6 7章ソースコード一通り
9735ec4 6章一通り
今回は「6章一通り」と書かれたコミットが100MB以上のファイルを含んでいるとします。
この場合修正したいコミットは4つ前なので、4つ分rebase
を行います。
git rebase -i HEAD~4
するとファイルが開かれると思います。
修正を加えたいコミットのpick
をe
に書き換えて保存してください。
↓のようになります。
e a75c554 6章一通り pick b0a30e5 7章ソースコード一通り pick 0f61aa3 7章resultファイル pick eec0ec3 7章の修正 # Rebase ac2e739..817b252 onto ac2e739 (5 commands) # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # d, drop = remove commit # # These lines can be re-ordered; they are executed from top to bottom. # # If you remove a line here THAT COMMIT WILL BE LOST. # # However, if you remove everything, the rebase will be aborted. # # Note that empty commits are commented out
↓のようなログがでたら成功です。
Checking out files: 100% (38/38), done. Stopped at 9735ec4... 6章一通りStopped at 9735ec4... 6章一通り You can amend the commit now, withYou can amend the commit now, with git commit --amend git commit --amend Once you are satisfied with your changes, runOnce you are satisfied with your changes, run git rebase --continue git rebase --continue
これで、--amend
を使ってコミットの修正ができるようになりました。
対象ファイルをgitコミットから除去します。
$ git rm --cached XXXX(対象ファイル名)
--amend
を使ってコミットに変更を加えます。
$ git commit --amend -CHEAD
rebase
を完了させます。
git rebase --continue
以上で100MB以上のファイルをコミットから取り除くことができました。
push
してみてください!
git push
gitignore
さらに、今後同じ過ちを犯さないように↓のコマンドを実行して,.gitignoreに100MB以上のファイルを追加しておくことをおすすめします。
$ find . -size +100M | sed -e 's/^\.\///' >> .gitignore
100MB以上のファイルをgitでどうしても管理したい場合
Git Large File Strage (LFS)というものがあります。
1GB/月 の帯域を無料で利用できます。
それ以降は課金が必要で、5.00USDで50GB/月 の帯域が購入できます。
↓のサイトの手順に従ってください!
qiita.com