Skip to main content

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

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

Platform navigation

GitHub でのサイズ制限について

GitHub では、すべての Git リポジトリへの十分なストレージの提供に努めていますが、ファイル とリポジトリの。 ユーザーに対してパフォーマンスと信頼性を確保するため、リポジトリ全体の正常性のシグナルを積極的に監視しています。 リポジトリの正常性は、サイズ、コミットの頻度、コンテンツ、構造など、さまざまな要因が互いに及ぼす作用です。

ファイル サイズ制限

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

注: ブラウザーからリポジトリにファイルを追加する場合、そのファイルは 25 MiB 以下でなければなりません。 詳しくは、「ファイルをリポジトリに追加する」を参照してください。

GitHub は 100 MiB を超えるファイルをブロックします。

この制限を超えるファイルを追跡するには、Git Large File Storage (Git LFS) を使う必要があります。 詳しくは、「Git Large File Storageについて」を参照してください。

リポジトリ内で大きなファイルを配布する必要がある場合は、ファイルを追跡するのではなく、GitHub.com でリリースを作成できます。 詳しくは、「大きなバイナリを配布する」をご覧ください。

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

リポジトリ サイズの制限

リポジトリは小さく保ち、理想としては 1GB 未満、および 5GB 未満にすることを強くお勧めします。 リポジトリが小さいほど、クローン作成が速く、操作やメンテナンスが簡単になります。 リポジトリがインフラストラクチャに過度に影響する場合は、GitHub Support から是正措置を求めるメールが送られてくる場合があります。 特に多くのコラボレータが参加している大規模なプロジェクトでは、柔軟に対応するよう努めており、可能な限り解決策を見つけるために協力します。 リポジトリのサイズと全体的な健全性を効果的に管理することで、リポジトリがインフラストラクチャに影響を与えることを防ぎます。 github/git-sizer リポジトリには、リポジトリ分析のためのアドバイスとツールがあります。

外部依存関係によって、Git リポジトリが非常に大きくなる場合があります。 リポジトリが外部依存関係で埋まってしまうことを避けるために、パッケージマネージャーの使用をお勧めします。 一般的な言語で人気のあるパッケージ マネージャーには、BundlerNode のパッケージ マネージャーMaven などがあります。 これらのパッケージマネージャーは Git リポジトリの直接使用をサポートしているため、事前にパッケージ化されたソースは必要ありません。

Git はバックアップツールとして機能するようには設計されていません。 ただし、ArqCarboniteCrashPlan など、バックアップを実行するために特別に設計された多くのソリューションがあります。

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

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

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

直近のコミットで追加されたファイルを GitHub.com にプッシュしていない場合は、ファイルを削除してコミットを修正することができます。

  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.com にプッシュします。

    $ git push
    # Push our rewritten, smaller commit
    

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

以前のコミットでファイルを追加した場合は、リポジトリの履歴から削除する必要があります。 リポジトリの履歴からファイルを削除するには、BFG Repo-Cleaner または git filter-repo コマンドを使用できます。 詳細については、「リポジトリからの機微なデータの削除」を参照してください。

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

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

リリース内のバイナリファイルの合計サイズや、それらの配布に使用される帯域は制限されません。 ただし、個々のファイルは2 GiB未満でなければなりません。