【Git】GitLFS [Git 大容量ファイルストレージ]

Git
スポンサーリンク

大容量のファイルをそのままバージョン管理するのは効率が悪いので、ファイルのメタ情報のみバージョン管理し、実ファイルは一元管理されたストレージに保存されるため大規模なgitを扱う際に高速化が見込めます。

GitHubの場合、1ファイルのサイズが100MBを超えている場合はLFSを使わないとアップロードできない。

GitHub での大きいファイルについて - GitHub Docs
GitHubには、通常のGitリポジトリで追跡できるファイルのサイズに制限があります。制限を超えるファイルを追跡または削除する方法について説明します。

git lfs がインストールされているか

git lfs --version

インストール方法

インストールされていない場合以下のコマンドでインストールできる

MAC

brew install git-lfs
git lfs install

Windows

git lfs install

※すでにgitをインストールしていること

LFSを使ったリポジトリをクローン

最新のGitバージョンであれば、いつも通りCloneするだけで問題ない。

※ git lfs がインストールされていない環境でpullやcloneしてもエラーが出ない

LFSをインストールするまでにクローンしてしまった場合(LFSインストール後にPullする方法)

LFSをインストール後以下のコマンドを実行する

git lfs pull

このコマンドを実行することでLFS管理されているデータを取得できる

LFS設定ファイル

lfs管理下にするには事前に.gitattributeファイルに設定を追加すること

Unityの場合以下の設定が参考になる

LFSの状況を確認するコマンド

git lfs status
git lfs ls-files

プロジェクトの途中からLFSを導入する方法

すでにLFS化したいファイルがGitの追跡対象になっている場合の対処方法

以下のコマンドを実行する

git lfs migrate info

実行すると以下のような結果となる

$ git lfs migrate info
migrate: Fetching remote refs: ..., done.
migrate: Sorting commits: ..., done.
migrate: Examining commits: 100% (18/18), done.
*.png           2.6 GB  1991/1991 files 100%
*.asset         425 MB  4066/4066 files 100%
*.wav           63 MB       27/27 files 100%
*.ogg           63 MB     333/333 files 100%
*.jpg           48 MB       41/41 files 100%

LFS Objects     0 B           0/1 file    0%

上記結果をもとに lfs に置き換えていくコマンドを実行する
(上記の結果の場合だと以下のようにincludeを書き換えて使う)

git lfs migrate import --include="*.png,*.asset,*.wav,*.ogg,*.jpg"

最後に過去の履歴を書き換えているのでForce Pushをする必要があります。

git push --force

もしlfs化したアセットが数バイトのデータになっている場合、メタデータのままになっているので、
一度以下のコマンドを実行することで、正常なデータの状態になります

git lfs pull

参考

Git LFS 2.2.0 released
GitLFSv2.2.0isnowavailablewiththeall-newgit-lfs-migratecommand,makingiteasierthanevertostartusingGitLFSinyourrepository.Forexample,ifyou’vetriedto…
スポンサーリンク
Git
スポンサーリンク
シェアボタン ('ω')ノ
ゲーム開発技術ブログ スメラテ すめらて
タイトルとURLをコピーしました