SlideShare a Scribd company logo
大容量ファイルも Git で管理。
Git LFS の使い方
吉澤 富美
2016.04.11
自己紹介
吉澤 富美(よしざわ よしみ)@ヒビキ
• デジパ株式会社 所属、D-77.LLC 代表
• サウジアラビアで幼少期を過ごす
• 元々マークアップエンジニア、
最近はウェブディレクター業務が多い
• X、LUNA SEA、BUCK-TICKなどが大好き
2
こんなこともやってます!
2012 年立ち上げ時から WP-D へ参加!
WP-D ではピンク担当
待ち合わせアプリ「meety」
HTML5 Japan Cup 2014 by html5j 部門賞受賞
3
執筆書籍
『現場でかならず使われている
WordPress デザインのメソッド』
『HTML5+CSS3でつくる!
レスポンシブWebデザイン』
『いちばんやさしい
Webマネジメントの教本』
など執筆
4
Git LFS とは
5
Git のおさらいから!
Git はプログラムのソースコードなどの
変更履歴を記録・追跡するための分散型バージョン管理システム
6
差分だけ記録
全バージョンのファイルを丸ごと保存しているわけではない
差分(変更点)の情報を記録!!
7
テキスト
データ
Git の弱点 バイナリファイル
画像や映像などの
バイナリファイルの
変更はテキストと違い
ファイル丸ごと記録
8
テキスト
データ
ではない
Git Large File Storage
Git LFS = Git Large File Storage
• Git LFS は GitHub が中心になり
開発している Git の拡張機能
• 大きなバイナリファイルは
Git 管理に向いていないが、
これを解決する目的
9
Git LFS の仕組み 10
GitHub
など
自分の
マシン
Git LFS の仕組み
• Large File Storage に
PSD などファイルの実態を格納
• Git には
テキスト・ポインタを格納
• Git リポジトリそのものは
肥大化しない
11
テキスト・ポインタ
Git LFS を使うメリット
• Git の苦手なバイナリファイルの管理に優れている
• Large File Storage を GitHub が提供($5 で 50 GB/month)
• テキスト・ポイントを格納、Git リポジトリは肥大化しない
• Git LFS ファイルを飛ばして clone や pull できる
• SourceTree から使うことも可能
(ただしコマンド必要になる可能性も高い、後述)
12
Git LFS なし 1.02MB Git LFS 利用 2.69KB
同じ修正をしたリポジトリ2つ 13
.git/objects の重さを比較
Git LFS を使うデメリット
• Large File Storage が必要
• Git LFS はまだ走り出したばかり(=不安定な時もある)
• Git LFS 管理のファイルを飛ばさずに clone や pull をすると、
ファイルの変更が大量だった場合などエラー落ちしてコケる
• Git LFS 管理のファイルを飛ばして clone や pull するのは手間
14
導入方法
15
導入方法 Windows
1. https://git-lfs.github.com/ の「Download」からインストー
ラーをダウンロードしてインストール
2. インストールしたら次のようにコマンドを打つ
3. マシン再起動
16
git lfs install
導入方法 Mac
Homebrew を使うと楽なのでオススメ!!
http://brew.sh/index_ja.html
最初に Homebrew をアップデートしておく
17
brew update
導入方法 Mac
1. Git LFS をインストール
2. インストールしたら次のようにコマンドを打つ
3. マシン再起動
18
brew install git-lfs
git lfs install
導入方法 Windows & Mac
Git LFS のバージョンを確認
\インストール完了!/
19
git lfs version
Git LFS で管理するファイル
追加したいファイルを設定
設定した内容は .gitattributes 内に設定が保存される
.gitattributes を直接編集しても良い
20
git lfs track "*.psd"
Git LFS で管理するファイル
設定できたか確認
設定できていれば、こんな感じに表示される
21
git lfs track
Listing tracked paths
*.psd (.gitattributes)
実際にコミットしてみて動作確認
1. テストファイル(Git LFS 管理対象の拡張子、例えば psd な
ど)を Git 管理のフォルダ内に追加
2. そのファイルをコミットする(プッシュはしないで良い)
3. Git LFS の管理下になったかを確認
2 でコミットしたファイル名があれば OK
22
git lfs ls-files
Git LFS の管理下にファイルがない場合
• git.exe(実行ファイル)の場所を開いて、同じ場所に git-
lfs.exe(実行ファイル)があるか確認
• 実行ファイルの場所が分からない場合、Windows であれば
MasterSeeker でサーチすると見つけやすい
• Mac の場合「/usr/bin/git」あたりに大体ある
23
SourceTree の設定
• SourceTree などのソフトを
使っていても Git LFS は使える
• SourceTree の場合、
ツール>オプションから
「内蔵 Git を使用」
「システム Git を使用」
を選択できる
24
SourceTree の設定
• SourceTree に内蔵の Git でも
いいんじゃないの?
• 悪くないけど後々コマンドを
打つことになるので、自分で
入れて使う方が今はオススメ
25
実際に運用して
ぶつかった問題
26
Q. クローンやプルが失敗する
• 差分に Git LFS で管理するファイルが大量だと
高確率でエラーが出てそのままクローンやプルが失敗する
• もれなく中途半端に落ちてきてしまったファイルが
作業コピーに入ったまま残るオマケつき
「作業コピーに 2000 くらいファイルが入ってる」
「何度やってもクローン失敗するよ!?」
27
A. クローンやプルが失敗する
• 原因は Git LFS 管理ファイルダウンロードと git clone や git pull
を一緒に行った際、Git LFS 側がタイムアウト等エラー落ちする
と git clone や git pull を巻き込んで落ちるため(ヒドイ)
• Git LFS 関連の処理をスキップして git clone や git pull だけを
先に行えば OK!ただしコマンドを打つ必要がある
28
GIT_LFS_SKIP_SMUDGE=1 git ほにゃらら
A. クローンやプルが失敗する(クローン)
• Git LFS 関連の処理をスキップしてクローン
• git clone が終わったら、指定したフォルダへ cd で移動して
Git LFS 関連のファイルをプル
29
GIT_LFS_SKIP_SMUDGE=1 git clone https://○○.git
git lfs pull
A. クローンやプルが失敗する(プル)
• Git LFS 関連の処理をスキップしてプル
• git pull が終わったら Git LFS 関連のファイルをプル
30
GIT_LFS_SKIP_SMUDGE=1 git pull
git lfs pull
Q. ファイルが作業コピーに残って消えない
• 変更してないファイルが作業コピーにあり破棄しようとしても
エラーがでたりして消せない(これ多くて本当大変でした)
「このファイル変更してないのに作業コピーに入ってる…」
「しかも破棄(リセット)しても消えない」
「SourceTree などで見ても差分は表示されないのになんで」
31
A. ファイルが作業コピーに残って消えない
• 破棄しても駄目な時はリモートと強制同期
ローカルでファイル変更をしていた場合は容赦なく
それも消えてしまうので注意
32
git fetch origin
git reset --hard origin/ブランチ名
Q. 何度もログイン情報を聞かれる
• ファイル 100 件ごとにユーザー名とパスワードを聞かれる
(HTTPS の場合)
• 3000 件以上 Git LFS 管理ファイルがあり大変な目に…
「何十回ユーザー名とパスワード入れれば良いん!?」
33
A. 何度もログイン情報を聞かれる
• Mac なら git credential を使えば OK
OS X のキーチェーンにログイン情報が保存される
(git version 1.7.9 以上が必要)
• Windows だと SSH で繋いでしまうのが楽?
34
brew upgrade git
git config --global credential.helper osxkeychain
一行目は
git version
アップグレード
まとめ
35
導入してどうだったのか?
Git でバイナリデータ(画像や動画など)を扱うようになり
ソースコードとバイナリデータを一元管理可能になった
36
導入してどうだったのか?
Web サイト上のデータを一元管理できるようになったため
Git にサーバーアップ用のブランチを作り、そのブランチから
デプロイしてサーバーへアップ可能になった
37
導入してどうだったのか?
Git ブランチからデプロイできるとアップ漏れもなくなり
大規模サイトになればなるほど便利さ実感!!
38
\やったぜ!/
現時点では完璧ではないが選択肢としてアリ
• まだ Git LFS の使い勝手は「最高に手軽で便利」とは言えない
• デメリットはある程度は運用でカバー可能
• メリットの方が大きいケースなら導入も1つの手
• 日々開発が進んでいる模様なのでチェック!
39
大容量ファイルもGitで管理。 Git LFSの使い方

More Related Content

PDF
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
PPTX
これからの Vision & Language ~ Acadexit した4つの理由
PDF
PG-REXで学ぶPacemaker運用の実例
PDF
Tensorflow Liteの量子化アーキテクチャ
PDF
負荷試験入門公開資料 201611
PDF
メトリクスによるソフトウェア品質評価・改善および製品品質実態
PDF
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
PDF
MagicOnion入門
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
これからの Vision & Language ~ Acadexit した4つの理由
PG-REXで学ぶPacemaker運用の実例
Tensorflow Liteの量子化アーキテクチャ
負荷試験入門公開資料 201611
メトリクスによるソフトウェア品質評価・改善および製品品質実態
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
MagicOnion入門

What's hot (20)

PPTX
画像処理AIを用いた異常検知
PDF
Fluentdのお勧めシステム構成パターン
PDF
[UE4]自動テストでもっと楽したい!
PPTX
60分でわかった気になるISO29119 #wacate
PPTX
Agile開発でのテストのやり方~私の場合~
PDF
【DL輪読会】Visual ChatGPT: Talking, Drawing and Editing with Visual Foundation Mo...
PDF
Git LFSを触ってみた
PDF
ソーシャルゲームのためのデータベース設計
PDF
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
PPTX
SageMakerを使った異常検知
PDF
複数のGNSSを用いたポーズグラフ最適化
PDF
Qua s tom-メトリクスによるソフトウェアの品質把握と改善
PDF
SSII2019TS: Shall We GANs?​ ~GANの基礎から最近の研究まで~
PPTX
強化学習における好奇心
PDF
Riderはいいぞ!
PDF
敵対的生成ネットワーク(GAN)
PDF
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
PDF
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
PDF
SLAM開発における課題と対策の一例の紹介
PDF
[DL Hacks]Variational Approaches For Auto-Encoding Generative Adversarial Ne...
画像処理AIを用いた異常検知
Fluentdのお勧めシステム構成パターン
[UE4]自動テストでもっと楽したい!
60分でわかった気になるISO29119 #wacate
Agile開発でのテストのやり方~私の場合~
【DL輪読会】Visual ChatGPT: Talking, Drawing and Editing with Visual Foundation Mo...
Git LFSを触ってみた
ソーシャルゲームのためのデータベース設計
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
SageMakerを使った異常検知
複数のGNSSを用いたポーズグラフ最適化
Qua s tom-メトリクスによるソフトウェアの品質把握と改善
SSII2019TS: Shall We GANs?​ ~GANの基礎から最近の研究まで~
強化学習における好奇心
Riderはいいぞ!
敵対的生成ネットワーク(GAN)
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SLAM開発における課題と対策の一例の紹介
[DL Hacks]Variational Approaches For Auto-Encoding Generative Adversarial Ne...
Ad

Viewers also liked (20)

PDF
いつやるの?Git入門
PDF
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
PDF
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
PDF
Startup jenkins!
PDF
サラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFD
PDF
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
PDF
モックアップ共有のススメ
PDF
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
PDF
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai
PDF
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」
PDF
書類作成環境のあるべき論とは
PDF
Shibuyatrac#13 scurmでやってみた
PDF
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum #sgt2016
PDF
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
PDF
自動化パタンランゲージ
PDF
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
PDF
Jenkinsを導入する本当の理由を考えてみた
PDF
Jenkinsではじめる継続的インテグレーション
PDF
邪道Jenkins
PDF
Jenkins に XFD を追加してみると
いつやるの?Git入門
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
Startup jenkins!
サラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFD
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
モックアップ共有のススメ
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」
書類作成環境のあるべき論とは
Shibuyatrac#13 scurmでやってみた
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum #sgt2016
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
自動化パタンランゲージ
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
Jenkinsを導入する本当の理由を考えてみた
Jenkinsではじめる継続的インテグレーション
邪道Jenkins
Jenkins に XFD を追加してみると
Ad

Similar to 大容量ファイルもGitで管理。 Git LFSの使い方 (20)

PDF
Git-dojo In Sendagaya.rb
PPTX
今さら聞けない人のためのgit超入門
PPTX
今さら聞けない人のためのGit超入門 OSC2018広島版
KEY
デザイナのためのGit講座
PDF
Gitのよく使うコマンド
PPTX
今さら聞けない人のためのgit超入門
PPTX
今さら聞けない人のためのgit超入門
PPTX
今さら聞けない人のためのGit超入門 GitLab 13対応版
PPTX
今さら聞けない人のためのGit超入門 2019/11/21
PPTX
今さら聞けない人のためのGit超入門 GitLab 14対応版
PPTX
今さら聞けない人のためのGit超入門 2020/12/19
PDF
gitを使う準備をしよう - 初級編
PDF
Git for beginners
PPTX
今さら聞けない人のためのGit超入門
PDF
バージョン管理
PDF
はじめてのGit #gitkyoto
PDF
15分でわかるGit入門
KEY
20120324 git training
PDF
Python for Data Analysis第1回勉強会(+git入門)
KEY
20120516 第7回ウフィカ社内ハンズオン Git基礎
Git-dojo In Sendagaya.rb
今さら聞けない人のためのgit超入門
今さら聞けない人のためのGit超入門 OSC2018広島版
デザイナのためのGit講座
Gitのよく使うコマンド
今さら聞けない人のためのgit超入門
今さら聞けない人のためのgit超入門
今さら聞けない人のためのGit超入門 GitLab 13対応版
今さら聞けない人のためのGit超入門 2019/11/21
今さら聞けない人のためのGit超入門 GitLab 14対応版
今さら聞けない人のためのGit超入門 2020/12/19
gitを使う準備をしよう - 初級編
Git for beginners
今さら聞けない人のためのGit超入門
バージョン管理
はじめてのGit #gitkyoto
15分でわかるGit入門
20120324 git training
Python for Data Analysis第1回勉強会(+git入門)
20120516 第7回ウフィカ社内ハンズオン Git基礎

大容量ファイルもGitで管理。 Git LFSの使い方