GitHub にて、ファイルサイズが100MB 100MiB 以上で Pushできなくなった場合の対策
<この記事は、「原因は分かってるんだけど、どうやって直したらいいかわからない」という人のために書きました。>
エラーメッセージ
this exceeds GitHub’s file size limit of 100.00 MB
上のようなメッセージが表示されて困っている方も多いのではないでしょうか。
エラーメッセージを見つけられたらまだ良いほうで、何が起こったかわからないひとも多いのではと思います。
とりあえず、以下にメッセージ全文を記録しておきます。
エラーメッセージ全文
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ git push Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 141.47 MiB | 134.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com. remote: error: Trace: ID remote: error: See http://git.io/iEPt8g for more information. remote: error: File YOURFILENAME is 146.00 MB; this exceeds GitHub's file size limit of 100.00 MB To https://github.com/USERID/REPOSITORY.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'https://github.com/USERID/REPOSITORY.git' |
原因
Githubの仕様は、1ファイルのファイルサイズが最大100MiB(100MB)までとなっています。もしかしたらBitbucketなら起こらないかもしれません。
対策
A.大きいファイルは置かないようにする
ここではAの対策を紹介します。
原因は100MiB以上のファイルをアップロードしていることなので、それを削除すればいいのですが、
ファイルを削除後にコミットして、その状態をアップロードしようとしても同じエラーが出ます。
なぜなら、Pushコマンドを実行した時点で、100MiBファイルを登録した状態の古いコミットもプッシュしようとするからです。
対策
1.以下のコマンドで古いコミットまで戻る。revetではダメです。古いコミットが残ったままになります。
変更があった既存のファイルを消してしまっても良い場合
$ git reset –hard コミットID
変更があった既存のファイルを残したい場合
$ git reset –soft コミットID
2.100MiBのファイルを削除するわけにはいけないので、gitignoreファイルを作成する。
.gitignoreを 置く場所はリポジトリのルート。
もし100MiBファイルをステージングしてしまってる場合は、rmコマンドでアンステージングする。
$ git rm –cached FILENAME
$ git rm –cached DIRNAME/
※ –cached をつけると、実態は消えない。
3.git statusで除外されてるか確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$ git status On branch master Your branch is up to date with 'origin/master'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: sample.txt Untracked files: (use "git add <file>..." to include in what will be committed) .gitignore (ここに100MiBファイルが無いことを確認する) |
4.この状態でCommitコマンドを実行すれば100Mibファイルは除外されてコミットされる。
5.PushすればOK。
もし解決しましたら、広告のクリックをしていただけると大変助かります。よろしくおねがいします。