はじめに
この記事は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.
大きなファイルのバージョン管理用のオープンソース 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に同梱されています。
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サイトリニューアルやシステム開発、学会事務局のお仕事をやっております!興味を持たれた方は気軽にお問い合わせからご連絡ください!
コメントを残す