git レポジトリに大きめのファイルを突っ込みたい。
動画の素材ファイルや、画像の素材ファイルとか、Sketch とか figma のデータそのままとか、コンパイルしたExecをそのままとか、考えるの面倒くさいのでどっかに放り込んでいきたい。
google drive に放り込んでいたけど、バージョン管理に時間制限があって、30日前になる。かといってDropboxまで追加で契約すのも面倒くさい。Evernoteは添付ファイルに容量制限があるし。
git lfs でバイナリ用のバージョン管理をする。
git lfs がありまして、 git large file storage の略ですね。比較的大きめのファイルをまとめてツッコんでgit と連携させることが出来る github製のツールです。
github 以外でも bitbucketや gitlab で利用できます。
使い方:クライアント
大きめのファイルをツッコんだら自動的にGit LFS になる。なんてことはない。このファイルはLFS管理しますよって設定が必要
なので、最初に このコマンドを突っ込む
git lfs install
lfs のインストール
といっても、git lfs は git に同梱されておらず。別途インストールが必要。
brew install git-lfs
はじめの一歩
git lfs をインストール後に、レポジトリでlfs を有効にする、対象の拡張子を指定し設定する。そしてgitattributesを追加してcommit する。
git clone URL cd REPO git lfs install # git lfs track '*.psd' # ここがlfs 特有の箇所 git add .gitattributes # git commit -m 'my commit comment' git push origin master
git lfs install でlfs 初期設定
lfs install すると .git ディレクトリ内部に、lfs の管理フォルダが生成される
takuya@sample001$ find .git/ /Users/takuya/.bin/find .git/ -mindepth 1 -not -iwholename '*/.git/*' .git/config .git/description .git/HEAD .git/info .git/info/exclude ## ↓この辺が作られる .git/lfs .git/lfs/objects .git/lfs/objects/logs .git/lfs/tmp .git/lfs/tmp/objects .git/objects .git/objects/info .git/objects/pack .git/refs .git/refs/heads .git/refs/tags
git lfs track でLFSの管理にするファイルのパターンをしてい、その設定が gitattributeに記述されるので、それを追加する。
git lfs track '*.rar' をした場合
gitattributes ファイルに、どのファイルをLFS対象にするか設定が書かれる。
takuya@sample001$ grep rar -R . ./.gitattributes:1:*.rar filter=lfs diff=lfs merge=lfs -text
すでに設定があるので、重複したtrackも検出される。
takuya@sample001$ git lfs track '*.rar' "*.rar" already supported
あとは commit
gitattributes も忘れずにコミットしないとね。
gitlab の場合
gitlab で git lfs を使う場合は、 lfs.url を追加しておく必要があった
git clone URL cd REPO git lfs install git config --add lfs.url https://example.com/takuya/sample01.git/info/lfs git lfs track '*.psd' git add .gitattributes git commit -m 'my commit comment' git push origin master
git lab のレポジトリURLの末尾に、 reponame.git/info/lfs
を加えたものを追加した。
gitlab 側の設定
omni gitlab CE側では LFSを受け取れるように設定する必要があった。
### Git LFS gitlab_rails['lfs_enabled'] = true gitlab_rails['lfs_storage_path'] = "/var/opt/gitlab-lfs"
lfs_storage_pathは自分で指定しておく必要がある。 reconfigure した時に、生成されパーミッションが設定された。
LargeFileが入ってくるところなので、それなりに安心して置いて置ける場所がいいと思う。
ディレクトリ設定に注意が必要だった。 ディレクトリは、gitlab レポジトリと別に設定できるので、管理対象として認識する必要がある。
ディレクトリを追加してるので、バックアップや移動時やDocker起動してるときに面倒だな
2018-01-03 追記
git config --add lfs.url
は無くても動いた。