Gitはテキストファイルのバージョン管理、差分管理は得意だけど、大きなバイナリファイルの管理は不得意らしい。
そのため、今まではバイナリファイルのバージョン管理はSubversionを使っていました。
ただ、GitとSubversionの両方を使うのは不便なのでなんとか画像とか、大きなバイナリファイルを管理できないかと調べてみました。
どうやら、Git Large File Storageっていうのを使えばよいらしいので調べてみました。
Git LFS (Large File Storage) とは
Git Large File Storage(Git LFS)とは、音声、動画、高画質な画像など、大容量ファイルをバージョン管理するためのGitの拡張機能です。
Git LFSの公式サイトは以下の通りです。
Git Large File Storage (LFS) replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server like GitHub.com or GitHub Enterprise.
Git LFSのインストール方法
Git LFSのインストールは以下から行います。
その後、以下のように設定します。
1 2 3 |
$ git lfs install $ git lfs track "*.jpg" $ git lfs track "*.png" |
以下のように設定を確認します。
1 2 3 4 5 6 |
$ cat .gitattributes *.jpg filter=lfs diff=lfs merge=lfs -text *.png filter=lfs diff=lfs merge=lfs -text $ git lfs track |
Git LFSの機能、使用方法
Git LFSの機能、使用方法は以下に詳しい。
・https://support-ja.backlog.com/hc/ja/articles/360038329474-Git-LFSの使用方法
大きなファイルを必要な分だけダウンロードする
たとえば、LFSで管理したファイルはgit clone・git pullのときではなく、git checkoutのタイミングで必要な分だけダウンロードされます。
大きなファイルの実態を分けて管理する
さらに、ユーザーのリモートリポジトリにはLFSで管理しているファイルの実態はなく、代わりにファイルのメタ情報のみを保持します。メタ情報は、LFSサーバーに実体を問い合わせるための情報を格納した数百バイトのテキストファイルです。
これにより、Gitのパフォーマンスを維持するための一般的な推奨事項として上げられる、Gitリポジトリのサイズを1GB以下に抑えやすくなります。
その他、Git LFSのadd push pull cloneなど細かな使い方、後からや途中からの設定はこちらのサイトが分かりやすかった。
・https://qiita.com/ikmski/items/5cc8b8832336b8d85429
コメント