tanaka's Programming Memo

プログラミングについてのメモ。

GitHub DesktopでLFSを使う(利用制限について追記11/23)

LFSとは、Large File Storage(大きいファイルの保存領域)のことです。

Gitはソースコードのバージョン管理を目的としていたシステムです。画像や音声データなどのバイナリーデータも放り込めるのですが、本来は大きなサイズのバイナリーファイルを扱うようにできておらず、低速な上に、1ファイル100MByteまでという制約があります。そこで、大容量のデータを効率よく、高速に扱うためのLFSが提供されるようになりました。

詳しくはこちら → Git Large File Storage - How to Work with Big Files - YouTube

LFSを使うことは必須ではありませんが、使った方が速度面でメリットがあったりしますし、100MByte以上のファイルが扱えるようになります。ただし、バンド幅と容量に制限があります。無料ではどちらも1GByte/月です。$5/月を支払うと、50GByte/月に増やすことができます(2017/11/23追記)。オーバーしたからすぐに課金される訳ではありませんが、利用にあたっては使い方や容量などを検討して導入してください。

新旧GitHub Desktopで使う手順をまとめます。

目次

前提

この記事は以下の環境で試したものです。

GitHub Desktop 新版

Electronで作り直された新バージョンですが、旧版より機能が少なくてなんだか使いにくい...という微妙なツールです。旧版だとGUIだけでLFSの設定ができますが、こちらではコマンドラインでの操作が必要になります。では設定を進めていきます。

  • GitHub Desktopを起動します

f:id:am1tanaka:20171122152744p:plain

  • LFSを設定したいリポジトリーを新しく作成するか、クローンなどして開いてください

f:id:am1tanaka:20171122153310p:plain

f:id:am1tanaka:20171122153445p:plain

  • Gitコマンドをインストールしていない場合、以下のような画面が表示されます。その場合は、[Install Git]でGitをインストールします。以下の画面が表示されなければ準備できていますので、LFSで管理したい拡張子を登録に進んでください

f:id:am1tanaka:20171122154122p:plain

  • 1のDownloadをクリックします

f:id:am1tanaka:20171122154403p:plain

  • Gitのページが開くので、最新版(Latest)をダウンロードします

f:id:am1tanaka:20171122154545p:plain

  • ダウンロードが完了したファイルを実行して、インストールしてください。セキュリティの警告などが表示されたら[実行]して、設定はそのままで結構です
  • インストールが完了したら、Release Noteページが表示されますが、閉じて結構です
  • インストールを反映するために、GitHub Desktopを閉じて起動し直します
  • 改めて、[Repository]メニューから[Open in Command Prompt]を選択すると、コマンドプロンプトが開きます

f:id:am1tanaka:20171122153445p:plain

LFSの初期化

リポジトリーのフォルダーにいる状態でコマンドプロンプトが開きます。コマンドで、LFSの設定を行います。

f:id:am1tanaka:20171122161326p:plain

git lfs install

f:id:am1tanaka:20171122161425p:plain

この作業は、リポジトリーに対して一回やればOKです。

LFSで管理したい拡張子を登録

  • LFSに登録したい大きなバイナリーファイルの拡張子を登録します。例えば以下のようにすると、GIF,PNG,JPG,WAV,OGG,MP3LFSに登録するようになります。不要なものは外して、他に必要と思われる拡張子を同様に追加してください
git lfs track *.gif *.png *.jpg *.wav *.ogg *.mp3

f:id:am1tanaka:20171122175050p:plain

これでリポジトリーに.gitattributesというファイルが生成されます。これがLFSの設定ファイルです。これ以降、登録した拡張子のファイルをリポジトリーに追加すると、自動的にLFSに登録するようになります。

試しにサンプルピクチャの菊をリポジトリーに追加してみました。これを適当な件名を入力してコミットします。

f:id:am1tanaka:20171122164435p:plain

コミットが完了したら、Pushします。

f:id:am1tanaka:20171122164525p:plain

LFSに登録されたか確認してみます。[Repository]メニューから[View on GitHub]を選択します。

f:id:am1tanaka:20171122164638p:plain

登録した画像ファイルをクリックして、容量の隣辺りに[Stored with Git LFS]が表示されていれば成功です。

f:id:am1tanaka:20171122175159p:plain

新しいGitHub Desktopでのセットアップ作業は以上です。以降、普通に使えば、登録した拡張子のファイルは自動的にLFSで管理されるようになります。

すでに登録済みのファイルはどうする?

残念ながら、自動的にLFSには移動してくれないようです。

  • 該当ファイルを一度リポジトリーの外に移動させてコミットして、リポジトリーから消す
  • 移動させたファイルを元の場所に戻す
  • 再度コミットして登録
  • プッシュ

とすると、LFSに登録し直されます。

GitHub Desktop 旧版

こちらの方はめちゃくちゃ簡単です。

f:id:am1tanaka:20171122175816p:plain

まずは、LFSを使いたいリポジトリーを作成したり、クローンして開きます。

f:id:am1tanaka:20171122175920p:plain

LFSで管理したい拡張子を登録

f:id:am1tanaka:20171122180002p:plain

  • 右上の歯車アイコンから、[Repository Settings...]を選択します

f:id:am1tanaka:20171122180102p:plain

  • 左から[Git LFS]を選択してから、右の欄に*.gifのように入力して、[+]をクリックして登録していきます。まとめて登録できないので、1つ1つ登録してください

f:id:am1tanaka:20171122180339p:plain

  • 上記は、GIF, PNG, JPG, WAV, OGG, MP3ファイルをLFSで管理する為の例です。登録が完了したら、[OK]を押します。これで設定ファイル.gitattributesが作成されます。以降、登録した拡張子のファイルはLFSで管理されるようになります

f:id:am1tanaka:20171122180615p:plain

試しにファイルを登録する

試しに、サンプルピクチャーの菊の画像を登録してみました。[Changes]のボタンをクリックして、変更内容を確認します。

f:id:am1tanaka:20171122180806p:plain

[Summary]欄に適当にコメントを書いて、[Commit to master]をクリックしてコミットします。

f:id:am1tanaka:20171122180918p:plain

右上の[Sync]、あるいは[Publish]をクリックしてGitHubにプッシュすれば完了です。

f:id:am1tanaka:20171122181038p:plain

LFSで作成されているか確認してみます。リポジトリーを右クリックして、[View on GitHub]を選択します。

f:id:am1tanaka:20171122181124p:plain

追加した画像をクリックします。

f:id:am1tanaka:20171122181339p:plain

容量の隣辺りに[Stored with Git LFS]と表示されていれば成功です。

f:id:am1tanaka:20171122175159p:plain

以上で設定完了です。これ以降は、普通にプロジェクト管理すれば、登録した拡張子のファイルは自動的にLFSで管理されるようになります。

すでにリポジトリーに登録済みのファイルは、自動的にはLFSで管理されるようにはならないようです。再登録の手順はこちら

参考URL