Bitbucketでread only modeになったときの対処


状況

Bitbucketread only modeになってしまいました。容量が2GBを超えるとread only modeになるようです。さらに5GBを超えてしまうと$ git pushしても受け付けず、以下が表示されます。

$ git push --force
Repository is in read only mode (over 2 GB size limit). Learn how to reduce your repository size: https://confluence.atlassian.com/x/xgMvEw.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

ちなみに2GB以上,5GB以下なら…

以下のコードで対処できるはずです。
$ git reset --hard HEAD~1
$ git push --force

対処法

リポジトリを一旦削除して再度作り直します。(対処法と言えるかは微妙ですが。)

1. ローカルリポジトリにpull

$ git pull

作業中のローカルリポジトリを壊したくなければ…

PCの別の場所に$ git clone [URL]しておきます。ちなみにURLはローカルリポジトリで$ git remote -vとすると調べられます。

2. 容量を減らす

次に、Gitの容量を減らすために、ローカルリポジトリの容量の大きいファイルやフォルダを削除します。バックアップをとってから以下のコマンドで削除します。

$ git filter-branch --tree-filter "rm -f -r [消したいディレクトリパス] " HEAD
$ git gc --aggressive --prune=now

3. リモートリポジトリを削除

ブラウザでBitbucketにログイン → 左上のハンバーガメニュー → 「リポジトリ」 → 削除したいリポジトリに移動 → 左上のハンバーガメニュ → 「Repository settings」 → 一番下の「リポジトリの削除」

4. 同名のリポジトリを作成

左上のハンバーガメニュー → 「+」 → 「リポジトリ」

リポジトリ名を以前と同じにすると、同じURLになります。

5. リモートにpush

$ git push

おわりに

複数人で共有している場合はテストしていません。割と雑な対処法ですが、個人で使う分には問題ないと思います。

環境

Ubuntu 18.04.4 LTS
git version 2.17.1

参考文献

How to push in read-only mode?
Git リポジトリに上がっているファイルを履歴ごと消すには?
Bitbucketのリポジトリを削除する5ステップ