画像を含めると1GB以上あったので、Git Large File Storageを使ってみた

ある案件で、画像ファイルを含めたリポジトリ全体のサイズが1GB以上ありました。その際に使った、Git Large File Storageについて紹介します。

Git Large File Storageとは

Git Large File Storage(Git LFS)とは、音声、動画、高画質な画像など、大容量ファイルをバージョン管理するためのGitの拡張機能です。Git LFSでは、大容量ファイルは別のストレージに格納され、Gitリポジトリには実際のファイルの代わりに「ポインタ」が格納されます。ポインタは、実際のファイルへの参照として機能します。

参照:https://git-lfs.github.com/
Icons made by Smashicons from www.flaticon.com

バイナリデータをバージョン管理しようとすると、Gitリポジトリが肥大化したり、Gitの処理(git clone、git push、git pull)に時間がかかったりしてしまいます。Git LFSを使うと、これらの問題が解決します。

どんな時にGit Large File Storageを使うのか

ファイルのサイズについて、GitHubのページには次のように書かれています。

If you attempt to add or update a file that is larger than 50 MB, you will receive a warning from Git.

[日本語訳]50MBを超えるファイルを追加・更新しようとすると、Gitから警告が表示されます。

About large files on GitHub – GitHub Docs

また、リポジトリのサイズについても次のように記載されています。

We recommend repositories remain small, ideally less than 1 GB, and less than 5 GB is strongly recommended.

[日本語訳]リポジトリは小さく保ち、理想としては 1GB 未満、および 5GB 未満にすることを強くお勧めします。

About large files on GitHub – GitHub Docs

以下のいずれかに該当する場合、Git LFSを導入したほうが良さそうです。

  • リポジトリ内に50MB以上のファイルが存在する
  • リポジトリ全体のサイズが1GB以上

Git Large File Storageのインストール

MacOSの場合

MacOSを使用している場合、Homebrewを使って下記のコマンドを実行します。

$ brew install git-lfs

その後、下記のコマンドを実行します。

$ git lfs install
> Git LFS initialized.

Windowsの場合

Git for WindowsにはGit LFSが含まれています。そのため、Git for Windowsをインストールしている場合は、改めてGit LFSをダウンロードする必要はありません。

コマンドプロンプトを開いて、下記のコマンドを実行します。

$ git lfs install
> Git LFS initialized.

管理するファイルの設定

ここからの設定はリポジトリごとにおこなう必要があります。

その後、Git LFSで管理したいファイルを指定します。例えば、.mp4ファイルを管理したい場合は、下記のコマンドを実行します。

$ git lfs track "*.mp4"
> Tracking "*.mp4"

指定したファイルの拡張子は、.gitattributesファイルに次のように書き込まれます。

*.mp4 filter=lfs diff=lfs merge=lfs -text

この.gitattributeファイルをプッシュすれば設定は完了です。

ここでは、特定の拡張子のファイルをすべてGit LFSで管理する場合を例に紹介しました。この他にもファイルの指定方法はいくつかあります。詳細はBacklogのサイトに記載されていますので、ご参照ください。

参考サイト