Skip to main content

GitHub での大きいファイルについて

          GitHub では、通常の Git リポジトリで追跡できるファイルのサイズが制限されます。 制限を超えるファイルを追跡または削除する方法について説明します。

Platform navigation

サイズ制限について GitHub

          GitHub は、すべての Git リポジトリに豊富なストレージを提供しようとしますが、ファイル  サイズ、リポジトリ サイズの推奨事項にはハード制限があります。 
          

ファイル サイズ制限

          GitHub では、リポジトリで許可されるファイルのサイズが制限されます。 
          50 MiBより大きいファイルを追加または更新しようとすると、Git から警告が表示されます。 変更は引き続きリポジトリに正常にプッシュされますが、パフォーマンスへの影響を最小限に抑えるためにコミットを削除することを検討してもよいでしょう。 詳細については、「[ファイルをリポジトリの履歴から削除する](#removing-files-from-a-repositorys-history)」を参照してください。

メモ

ブラウザーを使用してリポジトリにファイルを追加する場合、ファイルは 25 MiB以下にすることができます。 詳しくは、「ファイルをリポジトリに追加する」をご覧ください。

          既定では、 GitHub Enterprise Server は 100 MiBより大きいファイルをブロックします。 
          ただし、サイト管理者は、 お使いの GitHub Enterprise Server インスタンスの別の制限を構成できます。 詳細については、 [AUTOTITLE を](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise)参照してください。

この制限を超えてファイルを追跡するには、 Git 大容量ファイルストレージ (Git LFS) を使用する必要があります。 詳しくは、「Git Large File Storageについて」をご覧ください。

リポジトリ内に大きなファイルを配布する必要がある場合は、ファイルを追跡するのではなく、 お使いの GitHub Enterprise Server インスタンス でリリースを作成できます。 詳細については、「大きなバイナリを配布する」を参照してください。

Git は、大きい SQL ファイルを処理するようには設計されていません。 大きいデータベースを他の開発者と共有するには、ファイル共有サービスを使うことをお勧めします。

リポジトリの推奨サイズ

リポジトリは小さく保ち、理想としては 1GB 未満、および 5GB 未満にすることを強くお勧めします。 リポジトリが小さいほど、クローン作成が速く、操作やメンテナンスが簡単になります。

リポジトリのサイズと全体的な正常性を効果的に管理することで、リポジトリがインフラストラクチャに影響を与えないようにすることができます。 github/git-sizer リポジトリには、リポジトリの分析についてのアドバイスとツールがあります。

ファイルをリポジトリの履歴から削除する

警告

これらの手順により、コンピューターと お使いの GitHub Enterprise Server インスタンスのリポジトリからファイルが完全に削除されます。 ファイルが重要なものである場合は、ローカルバックアップコピーをリポジトリ外にあるディレクトリに作成してください。

プッシュされていない直近のコミットで追加されたファイルを削除する

ファイルが最新のコミットで追加され、 お使いの GitHub Enterprise Server インスタンスにプッシュされていない場合は、ファイルを削除してコミットを修正できます。

  1. [ターミナル][ターミナル][Git Bash] を開きます。

  2. ワーキングディレクトリをローカルのリポジトリに変更します。

  3. ファイルを削除するには、「git rm --cached」と入力します。

    $ git rm --cached GIANT_FILE
    # Stage our giant file for removal, but leave it on disk
    
  4.        `--amend -CHEAD` を使って、この変更をコミットします。
    
    $ git commit --amend -CHEAD
    # Amend the previous commit with your change
    # Simply making a new commit won't work, as you need
    # to remove the file from the unpushed history as well
    
  5. コミットを お使いの GitHub Enterprise Server インスタンスにプッシュします。

    $ git push
    # Push our rewritten, smaller commit
    

以前のコミットで追加されたファイルを削除する

以前のコミットでファイルを追加した場合は、リポジトリの履歴から削除する必要があります。 リポジトリの履歴からファイルを削除するには、git filter-repo コマンドをお勧めします。 詳しくは、「リポジトリからの機微なデータの削除」をご覧ください。

または、追加のツールをインストールしたくない場合は、対話型リベースを使って問題のあるコミットを削除することもできます。 手順は次のとおりです。

  • 問題のファイルを追加または変更したコミットを把握する必要があります。
  • コミットは 1 つのブランチのみに属している必要があります。
  • コミットが属する 1 つのブランチでは、コミットが適用された後にマージが行われていない必要があります。

対話型リベースの詳細については、「コマンドラインで Git リベースを使う」を参照してください。 対話型リベースを使って修正するために必要な条件を満たしているかどうかが不明な場合は、git filter-repo を使うことをお勧めします。

大きなバイナリを配布する

リポジトリ内に大きなファイルを配布する必要がある場合は、 お使いの GitHub Enterprise Server インスタンスでリリースを作成できます。 リリースでは、他の人が使用できるように、ソフトウェア、リリースノート、バイナリファイルへのリンクをパッケージ化できます。 詳細については、「リリースについて」を参照してください。