こんちわ。
ゲーム会社でソシャゲを作ってます、あまがみです!
今回は、個人開発で Git LFS を使ってみたかったので、いろいろ調べてみました!
備忘録です!
Git LFS とはなんぞや?
まず Git と Git LFS って何が違うん?というところから。
Git
Git とは、プログラムのソースコードなどをの変更履歴を記録・追跡するための 分散型バージョン管理システム
です。
古いバージョンに戻したり、新旧のファイルを一元管理できたり、複数人で修正した部分を共有できたりします。
Git LFS
Git LFS とは、Git の拡張機能です。
Git は 100MB 以上のファイルを扱えないのですが、Git LFS を使用することで、サイズの大きなファイルを管理することができます。
Git LFS では、サイズの大きなファイルの meta
データのみを管理し、ファイル本体はリモートサーバーで管理する仕組みになっています。
つまり、Git LFS を使うことで、Git だけでは管理できなかった大きなファイル(assetデータやフォントなど)をソースコードと一緒にバージョン管理できるということですね!
使い方
とはいっても Git の拡張機能ですので、Git は事前にインストールしておかなければなりません。
インストールの仕方は割愛しますが、まだインストールされてない方は以下の記事を参考にしてみてください。
- Gitのインストール方法(Windows版) [@T-H9703EnAc 様]
インストール
Git LFS のインストールは以下の手順で行います。
$ git lfs install
バージョンも確認しておくといいでしょう。
$ git lfs version
これで完了です!簡単だね!
リポジトリのクローン
$ git lfs clone <URL>
追跡するファイルを指定
次に追跡対象にしたいファイルを設定します。
100MBを超えるけど管理したいよーという拡張子を確認しておきましょう。
$ git lfs track "*.拡張子"
(例) $ git lfs track "*.asset"
みたいに指定すると、Git LFS が追跡してくれます。
確認
追跡対象が設定出来たら、一度確認しておきましょう。
$ git lfs ls-files
これで先ほど指定した拡張子が含まれていれば完了!
コミットしてみる
あとは通常通りにコミットします!
$ git add 対象のファイル
$ git commit -m "コミットメッセージ"
$ git push origin Pushしたいブランチ
これで 100MBを超えたファイルでも追跡してくれるはずです!
エラーが発生する場合
Encountered ~ file that should have been a pointer, but wasn't:
というエラーが発生する場合があります。これは、Git LFS で追跡できてないよ~というエラーになりますので、 migrate
コマンドで修正する必要があります!
$ git lfs migrate import --everything -- include="*.拡張子"
これで解決しない場合は、新しいリポジトリを作るほうが早いです。たぶん。
まとめ
- Git LFS は Git の拡張機能
- サイズの大きいファイルを追跡してくれるいいやつ
- インストール簡単
- エラーが出た場合、最悪リポジトリを作り直す必要がある
※間違っている部分がありましたら、ご連絡いただけますと幸いです!
参考資料
- Git LFS をちょっと詳しく [@ikmski 様]
- Gitのインストール方法(Windows版) [@T-H9703EnAc 様]
- [Git LFS][Gitlab][Windows] Git LFSの環境作成 [@koare-local 様]
- Git LFS を使う時の注意点 [みーのぺーじ 様]