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

  • URLをコピーしました!

ある案件で、画像ファイルを含めたリポジトリ全体のサイズが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のサイトに記載されていますので、ご参照ください。

参考サイト

GitHub Docs
About large files on GitHub - GitHub Docs GitHub limits the size of files you can track in regular Git repositories. Learn how to track or remove files that are beyond the limit.
Git Large File Storage
Git Large File Storage 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 co...

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
目次