GitHubハンズオン 第6回 ~巨大ファイル編~
本記事は、GitHubハンズオンの第6回の資料です!
過去の記事を読んでいることを前提としていますので、ご注意ください。
GitHubハンズオンシリーズ
- GitHubハンズオン 第1回 〜個人開発編〜
- GitHubハンズオン 第2回 〜共同開発編〜
- GitHubハンズオン 第3回 ~ブランチ運用法編~
- GitHubハンズオン 第4回 ~いろいろ取り消し編~
- GitHubハンズオン 第5回 ~無視リスト編~
- GitHubハンズオン 第6回 ~巨大ファイル編~ ← 本記事
LFSにファイルを登録する
LFSとは
100MBを超えるファイルを、サーバーへプッシュしようとするとエラーになります。
そのエラーをでないようにする仕組みがLFSです。
LFSは Large File System
の略で、巨大ファイル用システムという意味です。
新しいリポジトリを作る
ハンズオンを円滑に進めるため、GitHubで新しいリポジトリを作ります。
-
Owner
: ご自身の個人アカウント -
Repository name
:LfsPractice
-
Private
を選択-
Public
を選ばないようにしてください。
-
としてください。
これをクローンして、Forkでローカルリポジトリを開いてください。
コミットが1つもないと、この後の作業がやりづらいので、 README.md
等を作成してコミットしてください。
巨大ファイルを設置する
Sample101MB.bin をダウンロードしてください。
ちょうど101MBのファイルです。中身は意味のないデータが詰まっています。
(segurが適当に生成したファイルなので、ご自由にお使いください!)
これを、作業ディレクトリに設置してください。
これをコミットして、プッシュしようとすると、以下のようなエラーがでます。
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 してください。
(Mixed Reset
が何かわからない方は、 第4回 をお読みください。)
LFSを有効にする
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
を同時にコミットするのは問題ありません。
プッシュする
再びプッシュをしてみます。
今度は、問題なくプッシュできます!
LFSに登録されているファイルを確認する
リポジトリに登録されているLFSファイルを確認する
Forkの右上から Open in > View on GitHub で、リモートリポジトリのページを開きます。
Sample101MB.bin
をクリックします。
Stored with Git LFS と表記されています。
これは、このファイルがLFSに登録されているという証です!
LFSを利用しているリポジトリ一覧を確認する
GitHub右上の Settings をクリックします。
左サイドバーの Billing and plans > Plans and usage をクリックします。
下の方にスクロールして、 Git LFS Data > Storage をクリックします。
すると、LFSを利用しているリポジトリの一覧が表示されました!
無料プランの場合、合計1GBまで利用できます。
課金している場合1GB以上利用できますが、費用を抑えるためにも、巨大ファイルを大量に登録しないようにしましょう!
LFSからファイルを削除したい
GitHubのコストを削減するためにも、不要なファイルは削除すべきです。
しかし、LFSファイルの削除は、実はとても大変です。
LFSからファイルを削除する
以下の作業が必要になります。
- コミットの履歴を改ざんし、巨大ファイルのコミットをなかったことにする。
- リポジトリのLFS機能を無効にする。
- リポジトリを削除して再作成する。
詳しい手順はこちらを参照してください。
ファイルを Git Large File Storage から削除する - GitHub Docs
かなり複雑で難解な操作になるため、今回のハンズオンでは実施しません。すみません。
リポジトリを削除する
今回のハンズオンでは、リポジトリを削除することで、LFSも削除します。
LfsPractice
リポジトリを削除しましょう!
GitHubのリポジトリのページの右上にある Settings をクリックします。
一番下までスクロールし、 Danger Zone > Delete this repository をクリックします。
以下のようなダイアログが表示されます。
表示にしたがって進めると、以下のような画面になります。
リポジトリの名前をタイプして Delete this repository
をクリックします。
GitHubのパスワードの入力を求められるので、入力します。
リポジトリ一覧ページに遷移したら、削除成功です!
改めて、 Billing を確認すると、 Git LFS Data > Storage から LfsPractice
が消えているはずです!
さいごに
本記事作成にあたり、以下の記事を参考にさせていただきました。ありがとうございました!
これで、GitHubハンズオンは終了です!
ここまですべて実践いただいた方!
もうGitHubもForkも怖くありませんよね!
みなさまのお役に立てたなら幸いです!
これも何かのご縁ですので、 Twitter などフォローしていただけるととても嬉しいです!
(普段は、VR・ARに関する発信が多めですが、それでも構わなければ!)
以上、おつかれさまでした!