🚛

3GB超の Git リポジトリを Git LFS を有効にしつつ Bitbucket から GitHub に移行する

2021/02/08に公開

はじめに

サイズの大きなバイナリを多く管理する既存の Git リポジトリがある。
Bitbucket 上のサイズは 3GB で「2GB を超えたリポジトリはコミットができなくなる」という警告が出ている状態である(そうはいいつつコミットさせてくれる Bitbucket は優しい)

今回 GitHub に移行しつつ、ついでにサイズの大きなバイナリを Git LFS で管理するようにして、リポジトリの引っ越しをしたのでその記録をまとめる。

環境

まずは git-lfs をインストールする。環境は Ubutu 20.04 なので以下のコマンドでインストールする。

$ apt install git-lfs

余談だが Windows の Git の場合は、デフォルトで git-lfs が同梱されているようで、特に何もインストールせずに使えた。

$ git lfs version
git-lfs/2.13.1

マイグレーション

Bitbucket からクローンしてきたリポジトリで以下のコマンドを実行する。

$ git lfs migrate import --include="*.war,*.rpm,*.bin,*.gz" --everything

これで以下の処理をしてくれる。

  • Git LFS を有効化
  • 指定した拡張子のファイルを Git LFS で管理するように(過去未来共に)
  • 過去のコミットの書き換え(タグやブランチも)

あとはこれを GitHub に git push すれば、Git LFS が有効になったリポジトリができる。

$ git remote set-url origin git@github.com:ORGANIZATION/REPOSITORY.git
$ git push origin --all

GitHub

オーガニゼーションの Settings -> Billing & Plans から Git LFS のデータ使用量を見ることができる。
push した直後は表示が全く変わらず焦ったが、20-30 分くらいしたら反映された。

GitHub は無償では 1GB が上限なので、3GB のリポジトリを履歴も含めて push すると、当然上限を超えてしまう。
GitHub から「Git LFS のサイズ上限を超えたので Git LFS を無効化したよ」という旨のメールが届くので、そうしたら上記の画面で支払いをしてデータ容量を追加すれば良い。

まとめ

  • git lfs migraion で過去の履歴を含めて、 GIt LFS 対応にできて便利
  • GitHub は Git LFS のデータ容量が無償で 1GB (2021-02 現在)だが、それを超えるサイズのリポジトリを push しても失敗はしない
  • ただし、すぐに Git LFS が無効化されてしまうので、支払いをしてデータ容量を追加すること

Discussion