Git LFS ( Large File Storage )

https://support-ja.backlog.com/hc/ja/articles/360038329474-Git-LFS%E3%81%AE%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95
gitで巨大なファイルを扱うための拡張機能
gitは中央集権型バージョン管理システムと違ってローカルレポジトリにも全ての履歴を持つため、リモートレポジトリに巨大なファイルが含まれているとgit clone・git pullなどで巨大なファイルの各履歴をダウンロードしなければならなくなり動作速度に問題が出る。
この問題を解決するためにGit LFSでは、巨大なファイルの実体をレポジトリ内に置く代わりに、巨大なファイルの実体をLFSサーバー(ファイルサーバ)に置いてレポジトリにはLFSサーバーに問い合わせるための数百バイトのメタ情報テキストファイルを置く。
LFSで管理したファイルはgit clone・git pullのときではなく、git checkoutのタイミングで必要な分だけダウンロードされる。



巨大なファイルは競合時にマージが行えないバイナリファイルであることが多いため、同時に編集できないようにするためのロック機能も含まれている。

# 次のコマンドでGitLFSで扱うファイルパターンが.gitattributesファイルに追加される
$ git lfs track "*.png"

>

# あとは普通にgitコマンドで操作をすれば、特に意識せずにGitLFSでファイルを管理できる
$ git add example.png
$ git commit -m "add git lfs file"
$ git push



マシンに Git LFSをインストールされていない場合、GitLFSで管理している大容量ファイルにはアクセスできない。
クローンを試みた場合、例えば以下のようなポインタファイルが取得される。

  1. version https://git-lfs.github.com/spec/vi
  2. id sha256:7194bdd797bde471a6e29b4fa9c8c2278b3c4dadfc5cb2c36d7f4531dc6cb8f
  3. size 17330