私の問題の概要:Bitbucketのプライベートリポジトリの1つは、2つの既存のファイルに数百バイトの追加をプッシュした後、突然サイズが2倍以上になりました。レポジトリは現在2GBを超えているため、Bitbucketはそれを読み取り専用モードにしました。読み取り専用モードであるため、レポサイズを縮小する変更をプッシュできません。 (キャッチ22.)
詳細:私の会社は最近、Bitbucketでgitリポジトリのホスティングを開始しました。私が担当しているリポジトリの1つは約973MBのサイズで、1GBのソフト制限に不快なほど近かった。リポジトリサイズを縮小するために、Bitbucketドキュメントの記事の指示に従って リポジトリを2つに分割 し、約450MBのドキュメントとオンラインヘルプファイルを独自のリポジトリに移動しました。次に、具体的には、Bitbucketのドキュメント記事 リポジトリサイズの削減 および gitリポジトリの維持 の指示に従いました。
git count-objects -vH
は約973MBのサイズパックを見せてくれました。
git filter-branch --index-filter 'git rm --cached --ignore-unmatch doc' HEAD
docディレクトリを削除します(これは新しいリポジトリに移動したコンテンツです)。
参照とプルーンを期限切れにするために、次のコマンドを実行しました。
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
git reflog expire --expire=now --all
git gc --Prune=now
git count-objects -vH
その後、881.1 MiBとdu -sh .git/objects
は882Mを返しました。 450MBを超えるとレポジトリサイズが90MB未満削減されることに失望しましたが、それでもBitbucketに変更をプッシュしました。
git Push --all --force
git Push --tags --force
リポジトリのBitbucketコピーの設定ページには、引き続き973MBのサイズが表示されていました。私はログアウトし、ブラウザを更新し、再度ログインしましたが、それは助けにはなりませんでした-レポのサイズは973MBのままでした。
今朝(上記の変更の3日後)2つの既存のファイルにいくつかのマイナーな追加を行い、ファイルのサイズを合計で1 KB未満に増やし、追加してローカルリポジトリにコミットし、変更をBitbucket。数分後、レポジトリのBitbucketページを見て、「このレポは2 GBの制限を超えており、読み取り専用モードです」という赤い警告バナーが表示されました。現在、設定ページには、リポジトリのサイズが2.3 GBであると表示されます。
Bitbucketによると、2つのファイルに追加された数百バイトのプッシュは、間違いなく過去3日間にリモートリポジトリで発生する唯一のアクティビティでした。そのプッシュは、レポのサイズが2倍を超えることはなかったかもしれませんが、2つのイベントは時間的に密接に相関していました。
git reflog show
は何も返しません。
新しいコピーを別のディレクトリに複製してからgit count-objectsを実行すると、881.29 MiBのサイズパックが得られます。
ローカルリポジトリはCentOS 6.5システム上にあります。 gitバージョンは1.8.5.3です。
質問
Bitbucketテクニカルサポートに相談した後、次の質問に答えることができます。
Bitbucketリポジトリサイズを減らす最も簡単な方法2GBの制限を超えている場合
これにより、Bitbucketがgit gc
リポジトリ上。
私が知っているように、それらの家族はすでに知っていますが、gitはファイルのバージョン履歴を保存するので、変更を加えてファイルをプッシュしてもリポジトリサイズは小さくなりません。
Bitbucket、GitHub、gitlabなどのレポジトリサイズを縮小する方法はまだいくつかあります。最良の方法は、別のブランチによって追跡されていない限り、ブランチによって記録されているファイルを永久に削除するため、ブランチを削除することです。ただし、そのブランチに最新のファイルが必要な場合があるため、次のことを行ってください。
--cached
を使用して、リモートブランチを削除できます。ホストによっては、特別なコマンドを実行する必要があるかもしれませんが、これはほとんどの場合に機能するはずです。