GitLFSを使って大容量ファイルもGitサーバーに上げよう(EPOCHアドカレ3日目)

はじめに

この記事はEPOCH-NETアドベントカレンダー2024の3日目の記事です。
アドベントカレンダー3日めは結構技術的な話、Git LFSについて書こうと思います。

自己紹介

初めまして、株式会社EPOCH-NETでSREをやっています。もちもちずきんです。
株式会社EPOCH-NETでは、サーバーのメンテナンスやバックエンドシステムのコーディングなどを行なっています。
趣味は写真撮影や、SNSのサーバー管理です。LinuxやOSSのコミュニティ活動が好きで、個人で勉強会なども主催しています。(興味ある方はこちら→FediLUG

Git LFSとは?

Git LFSはGit Large File Storageの略でサイズの大きなファイル(動画やPDF)をテキストポインタに置き換えるGit拡張機能です。

An open source Git extension for versioning large files

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.

https://git-lfs.com より

大きなファイルのバージョン管理用のオープンソース Git 拡張機能

Git Large File Storage (LFS) は、ファイルの内容を GitHub.com や GitHub Enterprise などのリモート サーバーに保存しながら、オーディオ サンプル、ビデオ、データセット、グラフィックスなどの大きなファイルを Git 内のテキスト ポインターに置き換えます。

普通にGitで管理するのと何が違うかというと、LFSは大きく

  • git clone/pullのときにダウンロードされず、checkoutされる時点でダウンロードされる
  • リポジトリにはファイルのテキストポインタが設置され、実態をLFSサーバーに置く

という2つの特徴を持っています。

Git LFSのインストール

Git LFSはGitの拡張機能として提供されているため、基本的にGit本体とは別にインストールを行う必要があります。(git for windowsには含まれています。)

ここからの情報は2024年12月4日現在の情報ですので、アップデートなどにより同梱されたり方法が異なる可能性があります。ご了承ください。

Windows

Windowsの場合は、git for windowsに同梱されています。

https://gitforwindows.org

Mac OS

homebrewでインストールできます。

% brew install git-lfs

Linux

ディストリビューションによって異なります。ここではapt/debを使用するバージョンを紹介します。インストールガイド(英語)がありますのでそちらを参照することをおすすめします。

1. packagecloud リポジトリの追加

スクリプトでLinux ディストリビューションとバージョンをチェックし、それらのパラメータを使用して最適なリポジトリ URL を作成します。

$ curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | $ sudo bash

2. パッケージのインストール

aptコマンドでgit-lfsパッケージをインストールします。

$ apt install git-lfs

Git LFSの使い方

ファイルのトラック

まず、Git LFSで扱いたいファイルを指定する必要があります。例えば".mp4"拡張子のファイルをLFSで扱いたい場合

$ git lfs track "*.mp4"

をコマンドラインに入力します。入力すると、.gitattributesファイルが作成されます。
次に、作成された.gitattributesファイルをadd・commitします。

$ git add .gitattributes
$ git commit -m "track *.mp4 files using LFS"

この時点で他のファイルと同じようにGitを操作することで、指定したサイズの大きなファイルはLFSを使用して行うようになります。

ここからはいつものコマンドでリモートリポジトリへのpushなどができます。

Git LFSの確認

Git LFSの管理しているファイルを確認するためにはgit lfs ls-filesコマンドを使用します。

$ git lfs ls-files
1eppppppp * img/video.mp4

まとめ

Git LFSを使ってみた話でした。大きなファイルもリモートリポジトリ側がLFSに対応していれば、リポジトリの容量の肥大を防ぐことができます。

株式会社EPOCH-NETでは、お客様のニーズを丁寧に反映したWebサイトリニューアルやシステム開発、学会事務局のお仕事をやっております!興味を持たれた方は気軽にお問い合わせからご連絡ください!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA