100MBを超えるファイルを、サーバーへプッシュしようとするとエラーになります。
そのエラーをでないようにする仕組みがLFSです。
LFSは Large File System の略で、巨大ファイル用システムという意味です。
Sample101MB.bin をダウンロードしてください。
だいたい101MBのファイルです。中身は意味のないデータが詰まっています。
これを、作業ディレクトリに設置してください。
コミットして、プッシュしようとすると、以下のようなエラーがでます。
remote: error: File Sample101MB.bin is 101.00 MB; this exceeds GitHub’s file size limit of 100.00 MB remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
要約すると、以下のような感じです。
100MBを超えている巨大ファイルを検知しました。 LFSを利用してください。
巨大ファイルをコミットした1つ前の状態まで、 Mixed Reset してください。
Repository > Git LFS > Initialize Git LFS を実行してください。
この作業はリポジトリ毎に必要となります
(Initialize Git LFS が見つからない場合は、すでにLFSが有効になっています)
Sample101MB.bin を 右クリック > LFS > Track ‘Sample101MB.bin’ をクリックします。
すると、 .gitattributes というファイルが生成されます。
.gitattributes というのは、LFSの設定ファイルです。
中身を見ると、 Sample101MB.bin が登録されていることがわかります。
この .gitattributes のみをまずコミットしてください。
その次に、 Sample101MB.bin をコミットしてください。
Sample101MB.bin を .gitattributes よりも先にコミットしないようにご注意ください。
Sample101MB.bin と .gitattributes を同時にコミットするのは問題ありません。
再びプッシュをしてみます。
今度は、問題なくプッシュできます!
Forkの右上から Open in > View on GitHub で、リモートリポジトリのページを開きます。
Sample101MB.bin をクリックします。
Stored with Git LFS と表記されています。
これは、このファイルがLFSに登録されているという証です!
GitHub右上から Settings をクリック。
左サイドバーの Billing and plans > Plans and usage をクリック。
下の方にスクロールして、 Git LFS Data > Storage をクリックします。
すると、LFSを利用しているリポジトリの一覧が表示されました!
無料プランの場合、合計1GBまで利用できます。
課金している場合1GB以上利用できますが、費用を抑えるためにも、巨大ファイルを大量に登録しないようにしましょう(基本大きすぎるファイルは別の方法でやりとりする方がいいかと思います。)
GitHubのコストを削減するためにも、不要なファイルは削除すべきです。 しかし、LFSファイルの削除は、実はとても大変です。
以下の作業が必要になります。
詳しい手順はこちらなどを参照してください。
今回は、リポジトリを削除することで、LFSも削除する方法を見ていきます。
GitHubのリポジトリのページの右上にある Settings をクリックします。
一番下までスクロールし、 Danger Zone > Delete this repository をクリックします。
表示にしたがって進め、リポジトリの名前をタイプして Delete this repository をクリックします。
GitHubのパスワードの入力を求められるので、入力します。
リポジトリ一覧ページに遷移したら、削除成功です!