BFG を使用してリポジトリを Git LFS へ移行する

既存の Bitbucket リポジトリで Git LFS を使用する

このページの内容

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

Biitbucket リポジトリの既存の大容量ファイルに対して Git LFS 拡張機能を使用したい場合、それらのトラッキングだけでは LFS ファイルへの変換は行われません。大容量ファイルは引き続き Git リポジトリの一部であるため、それらのファイルを変換するには、履歴を書き換える必要があります。 

このページでは、bfg-repo-cleaner を使用して Bitbucket リポジトリの Git 履歴を変更する場合の 3 つの段階について説明します。

次の点に留意する必要があります。

  • BFG はリポジトリの Git 履歴を完全に書き換えます。
  • 移行プロセスは時間を要する場合があります。この期間、ユーザーやチームは既存のリポジトリで作業を行うことができません。


移行を開始する前に次の点をご確認ください。

  • 変換するファイルに対して十分な LFS ストレージがあること。ファイルの現在のバージョンと履歴に含まれる過去のすべてのバージョンに対応できる必要があります。
  • リポジトリへのアクセス権を持つすべてのユーザーがすべての変更をプッシュ済みであること。プッシュされていない変更をあとからマージすることはできません。
  • 移行中はリポジトリ権限を調整してプッシュを禁止すること。
  • ローカル マシンに Java Runtime Environment (Java 7 以降) がインストールされていること。
  • https://rtyley.github.io/bfg-repo-cleaner/ から最新の BFG バージョンをダウンロードしていること。

ご質問がある場合は、Git LFS サポートのリリース ノート、または「BFG リポジトリ クリーナー」ページを参照してください

A. リポジトリの既存のファイルの Git LFS への変換

ターミナルで以降のすべてのコマンドを実行します。

1. リポジトリのクローン


git clone --mirror git@bitbucket.org:<username>/<repo-name>.git


mirror フラグでクローンを行うと、ベア リポジトリが作成されます。これを行うと、ユーザーやチームのすべてのブランチを取得できます。

This will create a folder called <repo-name>.git

2. クローンされたリポジトリのバックアップ

Make a backup of the  <repo-name>.git folder so if anything goes wrong you can revert to this version.

3. BFG での Git 履歴の書き換え

https://rtyley.github.io/bfg-repo-cleaner/ から最新の BFG バージョンをダウンロードしていることを確認します。

Use the absolute path to the location of the downloaded bfg-x.x.x.jar file.

java -jar <path to>bfg-x.x.x.jar --convert-to-git-lfs "*.{png,mp4}" --no-blob-protection <repo-name>.git

This example converts png and mp4 file types, but you can specify other file types to convert as well.

(warning) This will rewrite all the history of all the branches, replacing all the png or mp4 files with LFS versions.

4. Git LFS の初期化


cd <repo-name>.git
git lfs install


これは、ベア リポジトリに pre-push hook を追加します。

5. 変換したリポジトリを Bitbucket にプッシュして戻す


git push --force


これはすべての大容量ファイルを LFS ストレージにプッシュし、新しく書き換えた履歴で Git 履歴を上書きします。

ご質問がある場合は、「BFG リポジトリ クリーナー」ページまたは Git LFS サポートのリリース ノートを参照してください。




B. Git LFS での以降のトラッキングのセットアップ

1. 変換したリポジトリを Bitbucket からクローン

git clone git@bitbucket.org:<username>/<repo-name>.git

前述の手順で変換した Git リポジトリをクローンします。

2. Git LFS ファイルでのファイルのトラッキング

Git LFS ファイルのトラッキングをローカルにセットアップする」をご参照ください。 



C. 更新されたリポジトリの変更のチームへの許可

各ユーザーがローカルに Git LFS 拡張機能をインストールしている必要があります。手順については、「Bitbucket で Git LFS を使用する」をご参照ください。 

その後、ユーザーはローカルにあるリポジトリの既存のクローンを削除して、LFS が有効化された新しいバージョンをクローンする必要があります。


git clone git@bitbucket.org:<username>/<repo-name>.git




最終更新日: 2018 年 9 月 8 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.