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

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

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

このエラーはGitHubに設定されているサイズ上限を超えた場合に発生します。

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できます。

参考