メインコンテンツまでスキップ

GitHub から pack exceeds maximum allowed size と言われる時の対策方法

GitHub へデータサイズの大きいリポジトリを push する際に、下記のようなエラーが発生することがあります。

remote: fatal: pack exceeds maximum allowed size
fatal: The remote end hung up unexpectedly

このエラーは GitHub のデータサイズ上限を超えた push をする場合に発生します。

GitHub では 2GB 以下のリポジトリサイズが推奨されていますが、 2GB 以上のサイズにできない訳ではないので、分割してサイズを小さくして push をしてやればエラーはなくなります。

分割 push するためには下記の手順を行ってください。

1. 分割部分のコミットにタグを作成する

タグを作成するコミットは好きなところでいいですが、500コミットぐらいで区分してやれば問題ないと思います。

タグを作成するコマンドは下記のとおりです。

git tag <tag_name> <commit>

tag_name にはタグ名、commit にはコミットの SHA-1 ハッシュを入れてください。
複数のタグを作る場合、異なる tag_name を設定してください。
tag_name は後で使うので覚えるかメモしておいてください。

2. 指定したタグまで push する

git push origin `git show <tag_name> | grep commit | cut -d' ' -f2`:refs/heads/master

tag_name は手順1で作成したタグのタグ名を入れてください。
push が終わったら次のタグ名を入れて再度実行してください。
これでサイズを超過したリポジトリを GitHub に push できます。

参考