※本記事は、Colin Woodが2022年3月31日に公開した英語記事「Git push size limits are coming to Bitbucket Cloud starting April 4th, 2022」を翻訳したものです。内容に相違が見受けられる場合、英文ページの内容を正とします。
4月4日より、プッシュ制限の適用を開始します。プッシュ内容が3.5GBを超える場合にそれを完了することはできません。3.5GBを超える内容をプッシュしようとした場合、プッシュに失敗して次のエラーが返されます。
remote: fatal: pack exceeds maximum allowed size
Bitbucketでは現在リポジトリあたり4GBのハード制限があります。ユーザーが上限を超えてしまいリポジトリがブロックされるのを防ぐため、Bitbucketチームは3.5GBのプッシュ上限を導入します。これにより、ユーザーが意図せず大規模なファイルをプッシュしてリポジトリが読み取り専用になってしまう事態を減らせると考えています。
Gitでは、ファイルと履歴をプッシュすると1つのPack fileが生成されます。これは、履歴とファイルのコンテンツを保管するために作成されるバイナリ ファイルです。Dockerイメージ、動画、大容量の画像などの大規模なバイナリオブジェクトを含めた場合、このファイルのサイズが大きくなる可能性があります。Gitでこれらのプッシュファイルの圧縮が行われますが、引き続きサイズが非常大きく、管理できないままになる可能性があります。
リポジトリのサイズを減らすのに役立つガイドをご用意しています。ここでは大規模なコミットをプッシュする方法の回避方法もご案内しています。
上述のエラーに対応するための2つの方法をご紹介します。
方法1
プロジェクト全体を小規模なコミットに分割し、複数回プッシュしてプロジェクト全体をアップロードします。これは、このようなファイルが大規模なバイナリファイルではない場合にのみ行えます。大規模なバイナリファイルである場合は以降の方法2をご確認ください。すでに試行済みでプッシュに失敗している場合は前回のコミットをリセットして再度お試しください。
git reset –mixed COMMIT-SHA (リポジトリのインデックスから対象の大規模なファイルを取り除いてステージングを解除するが、引き続きローカルでは利用可)
git status (現在ステージングされていない変更を表示)
`git add file` を利用して小規模なコミットを行うことで小規模な変更を実施
それぞれの小規模なコミットをoriginにプッシュ
方法2
大規模なバイナリファイルをLFSで追跡するように移動します。LFSではアップロードにmedia APIが利用されているため、Gitのプッシュ制限の影響を受けません。Bitbucket CloudでGit LFSを利用する方法の詳細をご確認ください。
注意: 現在のプッシュのサイズを確認したい場合、git count-objects -vH を実行してローカルサイズが3.5GB未満であることを確認できます。
どうぞよろしくお願いします。
Bitbucket Cloudチーム
Ai Hirama
Technical Support Manager
61 accepted answers
1 comment