Git LFS にちょっと触れてみた

Git LFS にちょっと触れてみた

こんにちは!Webエンジニアのtrrn(呼称:てらりん)です。

世の中のブロガーさん達は揃って「早く梅雨明けないかなー」と書いてそうなくらいじめじめしていますね。
個人的には洗濯物の臭いが気になるので、梅雨明けが待ち遠しいです。早く梅雨明けないかなー!

さて今回は、Git LFSについて調べてみたので、これについて書いていこうと思います。
調べてみた背景としては、画像ファイルが大量に登録されているリポジトリをクローンするのに長時間待つことになり、実装にスムーズに入れなかったのが精神衛生上良くなかったからです笑

Git LFS とは?

Git Large File Storage の略称であり、GitHubで開発された、Gitで大容量ファイル(以降、ラージファイルと称す)を扱うためのGitの拡張機能です。
ファイルの保存先がこれまでリポジトリだけだったのに対し、Git LFS(以降、文中ではLFSと称す)を利用するとLFSサーバにラージファイルを保存することができるようになります。
これで肥大化したリポジトリを長時間クローンする現状から解放されるのかな?

SourceTreeでGit LFSを使う

弊社の開発者はGitクライアントソフトとしてSourceTreeを使用しています。
僕は基本的にコマンドでやってますが!

SourceTreeのリポジトリメニュー内にLFSを発見しました。
ちなみに、執筆時点のSourceTreeのバージョンは2.1.2.5です。残念ながらWindowsです。

SourceTreeのリポジトリメニュー内のGit LFS

すでに検証しているため画像では「リポジトリを初期化…」メニューは押せなくなっていますが、初期化すると次のようなダイアログが表示されるので、「Start Using Git LFS」ボタンを押すことでLFSの設定が初期化されます。

Git LFS初期化用のダイアログ

やっていることは$ git lfs installコマンドと同等です。

これにより、.git/lfsが作成され、ユーザレベルの.gitconfigに下記のコードが追加されます。

次にLFSに登録するファイルを設定します。

LFSの対象ファイルを設定するダイアログ

適当に追加します。

対象ファイルを追加したダイアログ

これは$ git lfs track *.gif *.jpeg *.jpg *.png *.psdコマンドと同等です。

これでワークツリーに下記のコードが記述された.gitattributesが作成されます。

画像を挟むと長ったらしく設定が必要なのかと勘違いするかもですが、LFSの基本的な設定はこれで完了です。(コマンドは2つだけ!
$ git lfs trackのヘルプコマンドを呼んでいたところ、--lockableというオプションでLFSサーバ上のファイルにロックをかけることで、同時に2人以上で更新できないようにできるようです。
何かに使えるかもしれないですね。ちなみにこのオプションはSourceTreeでの設定ができなかったので、必要であればコマンドを打ってみてください。

ラージファイルをコミットしてみると、次のようにSHA256ハッシュでリポジトリに登録されています!

ラージファイルの差分

ラージファイルの実体はLFSサーバに登録され、リポジトリにはそれを参照するポインタが登録されるみたいです。

ということで、今回はこれくらいにしておきます。
LFSに興味がわいてきたので、次回さらに掘り下げていこうと思います。


Previous: 「経営者の条件」より開発部門管理についての思考 第二弾 Next: Firebaseを使ってみたい その2

© 2017 ALL CONNECT Inc. All Rights Reserved.