Bitbucket での Git LFS の現在の制限事項

お困りですか?

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

コミュニティに質問

このページでは、Bitbucket で Git LFS を使用する際の以下の制限事項に関する回避策について説明します。

Bitbucket Cloud にプッシュできる LFS のファイル サイズに制限はありません。

リポジトリが譲渡できない

制限事項 現在、Git LFS ファイルを含むリポジトリの譲渡は無効化されています。
説明

リポジトリの譲渡では、Git LFS ファイルにアクセスするための権限が新しい所有者に付与されないため、リポジトリ内のこれらのファイルへのすべての参照が破損します。さらに、課題やプル リクエストなどの一部のメタデータは、新しいリポジトリに正しく譲渡されません。

ユーザーが最初の LFS ファイルをリポジトリにプッシュすると、そのリポジトリの譲渡は無効化されます。

回避策

リポジトリを譲渡するのではなく、リポジトリのクローンをローカル マシンに作成し、Bitbucket でリポジトリを作成してそこにプッシュします。

このとき、すべてのファイルと Git 履歴は新しいリポジトリで利用可能ですが、課題やプル リクエストなどのメタデータはコピーされません。さらに、新しいリポジトリのユーザーとアクセス権をセットアップする必要があります。

手順は以下のとおりです。

  1. 通常の手順で、ローカル マシンに Git LFS リポジトリのクローンを作成します。
  2. Git LFS 履歴をフェッチします。

    git lfs fetch --all origin
  3. Bitbucket に新しいリポジトリを作成します。 
  4. 新しいリポジトリを参照するリモートをローカルに追加します。

    git remote add new-origin <URL to new repo>
  5. 新しいリポジトリにプッシュします。

    git push -u new-origin --all

    これによって、リポジトリとその参照の初回プッシュが行われます。

  6. 新しいリポジトリに Git LFS データをプッシュします。

    git lfs push --all new-origin
  7. 最後に、新しいリポジトリ用にリモートを更新します。

    git remote set-url origin <URL to new repo>
    git remote set-url --push origin <URL to new repo>

     

リポジトリをフォークする際に Git LFS ファイルがコピーされない

制限事項 現在、Git LFS ファイルを含むリポジトリをフォークすると、新しいリモート ストアに LFS ファイルがコピーされません。
説明

Git LFS ファイルを含むリポジトリのフォークでは、通常どおり、LFS ポインター ファイルを含むすべてのファイルがフォークにコピーされます。ただし、ポインター ファイルは元のリモート ストアを参照したままで、新しいリポジトリにはそこへのアクセス権がありません。

ユーザーが最初の Git LFS ファイルをリポジトリにプッシュすると、この制限がそのリポジトリのフォークに適用されます。

同じ理由でクロスフォーク プル リクエストが影響を受けることに注意してください。プル リクエストがマージされる際に、LFS ファイルがリモート ストアにコピーされません。

回避策

リポジトリをフォークするときに、以下のようにコマンドラインを使用して Git LFS ファイルを新しいリポジトリにコピーできます。

  1. Bitbucket で通常の手順でリポジトリをフォークします。
  2. ローカル マシンに新しいリポジトリのクローンを作成します。

    git clone <clone URL for forked repo>

    エラーが表示される場合があります。これは以降で修正します。

  3. 元のリポジトリを参照するリモートを追加します。

    git remote add old-origin <URL to original repo>
  4. 元のリポジトリから Git LFS データをフェッチします。

    git lfs fetch --all old-origin
  5. 新しいリポジトリに Git LFS データをプッシュします。

    git lfs push --all origin
  6.  新しいリポジトリからプルして、クローンを更新します。

    git lfs pull

    これで完了です。

リポジトリ アーカイブに Git LFS ファイルが含まれない

制限事項 現在、リポジトリ、タグ、またはブランチのアーカイブをダウンロードした場合に、Git LFS ファイルが含まれません。通常のソース ファイルのほかに、LFS ファイル用のポインター参照ファイルのみが含まれます。これは、アーカイブではフル バックアップが作成されるわけではないことを意味します。
説明

Git LFS ポインター ファイルはアーカイブに含まれますが、LFS ファイルは現在追加されません。

ユーザーが最初の LFS ファイルをリポジトリにプッシュすると、そのリポジトリで作成されたアーカイブにこの制限が適用されます。

リポジトリでの回避策

回避策は、リポジトリのクローンを手動で作成し、ローカルでアーカイブすることです。

  1. リポジトリのクローンを作成します。

    git clone <URL for repo>
  2. 任意のツールを使用して、ローカルでリポジトリ ディレクトリを手動でアーカイブします。

  3. (オプション) Bitbucket の [ダウンロード] ページにアーカイブをアップロードします。

これによって、メイン ブランチの先頭にあるファイルのみがアーカイブされることにご注意ください。Git 履歴で参照されたすべての LFS ファイルを取得するには、アーカイブを作成する前に git fetch --all を使用する必要があります。

ブランチの回避策

 回避策は、手動でリポジトリのクローンを作成し、ブランチをチェックアウトして、ローカルでアーカイブすることです。

  1. リポジトリのクローンを作成します。

    git clone <URL for repo>
  2. ブランチをチェックアウトします。

    git checkout <branch_name>
  3. 任意のツールを使用して、ローカルでリポジトリ ディレクトリを手動でアーカイブします。
  4. (オプション) Bitbucket の [ダウンロード] ページにアーカイブをアップロードします。
タグの回避策

 回避策は、手動でリポジトリのクローンを作成し、タグをチェックアウトして、ローカルでアーカイブすることです。

  1. リポジトリのクローンを作成します。

    git clone <URL for repo>
  2. タグをチェックアウトします。

    git checkout tags/<tag_name>
  3. 任意のツールを使用して、ローカルでリポジトリ ディレクトリを手動でアーカイブします。
  4. (オプション) Bitbucket の [ダウンロード] ページにアーカイブをアップロードします。

Git LFS の制限事項を完全に回避する

Git LFS に関する Bitbucket の制限またはそれらの回避策の許容が難しい場合、リポジトリ管理者はリポジトリからすべての Git LFS ファイルを削除し、標準の Git の動作を復元することができます。

手順や注意点については、「既存の Bitbucket リポジトリで Git LFS を使用する」を参照してください。

最終更新日: 2017 年 9 月 25 日

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

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