GitHubでの大きなファイルの管理とGit LFSの利用

GitHubは様々なファイルサイズの制限を設けており、100MB以上のファイルはリポジトリにプッシュすることが推奨されていません。これにはいくつかの理由がありますが、主にリポジトリのパフォーマンスと管理の効率性が関係しています。

GitHubのファイルサイズ制限

  • 100MB制限: 個々のファイルは100MB以下でなければならず、それ以上のサイズのファイルをコミットしようとすると警告が表示されます。
  • リポジトリ全体の容量: プライベートリポジトリは合計で2GB、パブリックリポジトリは無制限ですが、パフォーマンスを考慮して大量の大きなファイルを保持することは推奨されていません。

Git Large File Storage (LFS) の導入

Git LFSは大きなファイルを効率的に管理するためのGitの拡張機能です。Git LFSを使用すると、大きなファイルはリポジトリ内に直接格納されるのではなく、ポインターとして扱われ、別のサーバー上に保存されます。これにより、リポジトリのクローンやプルリクエストの処理速度が向上します。

Git LFSのセットアップ方法

  1. Git LFSをインストール: git lfs install コマンドを実行して、システムにGit LFSをインストールします。
  2. LFSで管理するファイルを追跡: git lfs track "*.psd" のようにコマンドを実行し、LFSで管理したいファイルのパターンを指定します。
  3. .gitattributes ファイルを確認: LFSで追跡するファイルパターンは.gitattributes ファイルに記述されます。このファイルをコミットに含めることが重要です。
  4. ファイルをコミットしてプッシュ: 変更をコミットし、git push コマンドで変更をリモートリポジトリにプッシュします。

ベストプラクティスと注意点

  • 大きなファイルの使用検討: 本当に大きなファイルをリポジトリに含める必要があるかどうかを検討し、可能な限りファイルサイズを最適化してください。
  • LFSのストレージと帯域幅の制限: Git LFSを使用するとストレージと帯域幅に制限が適用されるため、これらの制限を確認してください。
  • LFSファイルのクローン時の挙動: LFSファイルはデフォルトで「ポインタ」のみがクローンされます。実際のファイルを取得するには git lfs pull コマンドが必要です。

まとめ

GitHubで大きなファイルを効果的に管理するためには、Git LFSの利用を検討することが重要です。正しく設定と使用を行うことで、リポジトリの健全性を保ちながら効率的に大容量のデータを扱うことが可能となります。

GitHubDeskTopで100MBを超えるファイルを含むコミットを実行した時

コミット時に表示される警告

このケースでは、Terraimで使っている2つの芝生テキスチャーとDemo、画像ファイルが該当しています

この画面はGitHubが表示している警告です。ファイルサイズが100MBを超えるファイルをコミットしようとしていますが、GitHubの標準リポジトリでは大きなファイルの管理には適していません。このような場合、GitHubはGit Large File Storage(Git LFS)の使用を推奨しています。Git LFSを使用すると、大容量のファイルを効率的に扱うことができ、リポジトリのクローンやフェッチの速度が低下するのを防ぐことができます。

この警告画面には「Cancel」と「Commit Anyway」の二つのボタンがあります。「Cancel」を選択すると、コミットはキャンセルされます。「Commit Anyway」を選択すると、警告を無視してファイルをコミットしますが、これによりリポジトリの操作が重くなったり、他のユーザーがリポジトリをクローンする際に問題が発生する可能性があります。

上記画像は、Terrainで使われていますので、次のところで置き換えてください

未使用である、または代替えが効く場合の対処

Git LFSは無料枠が限られています
100MB以下のファイルで代替えができる場合は、削除するのも1つです

例:SphericalRenderPSD.psdファイルを削除する場合