More Related Content Similar to 大容量ファイルもGitで管理。 Git LFSの使い方 (20) 大容量ファイルもGitで管理。 Git LFSの使い方2. 自己紹介
吉澤 富美(よしざわ よしみ)@ヒビキ
• デジパ株式会社 所属、D-77.LLC 代表
• サウジアラビアで幼少期を過ごす
• 元々マークアップエンジニア、
最近はウェブディレクター業務が多い
• X、LUNA SEA、BUCK-TICKなどが大好き
2
9. Git Large File Storage
Git LFS = Git Large File Storage
• Git LFS は GitHub が中心になり
開発している Git の拡張機能
• 大きなバイナリファイルは
Git 管理に向いていないが、
これを解決する目的
9
11. Git LFS の仕組み
• Large File Storage に
PSD などファイルの実態を格納
• Git には
テキスト・ポインタを格納
• Git リポジトリそのものは
肥大化しない
11
テキスト・ポインタ
12. Git LFS を使うメリット
• Git の苦手なバイナリファイルの管理に優れている
• Large File Storage を GitHub が提供($5 で 50 GB/month)
• テキスト・ポイントを格納、Git リポジトリは肥大化しない
• Git LFS ファイルを飛ばして clone や pull できる
• SourceTree から使うことも可能
(ただしコマンド必要になる可能性も高い、後述)
12
13. Git LFS なし 1.02MB Git LFS 利用 2.69KB
同じ修正をしたリポジトリ2つ 13
.git/objects の重さを比較
14. Git LFS を使うデメリット
• Large File Storage が必要
• Git LFS はまだ走り出したばかり(=不安定な時もある)
• Git LFS 管理のファイルを飛ばさずに clone や pull をすると、
ファイルの変更が大量だった場合などエラー落ちしてコケる
• Git LFS 管理のファイルを飛ばして clone や pull するのは手間
14
18. 導入方法 Mac
1. Git LFS をインストール
2. インストールしたら次のようにコマンドを打つ
3. マシン再起動
18
brew install git-lfs
git lfs install
19. 導入方法 Windows & Mac
Git LFS のバージョンを確認
\インストール完了!/
19
git lfs version
22. 実際にコミットしてみて動作確認
1. テストファイル(Git LFS 管理対象の拡張子、例えば psd な
ど)を Git 管理のフォルダ内に追加
2. そのファイルをコミットする(プッシュはしないで良い)
3. Git LFS の管理下になったかを確認
2 でコミットしたファイル名があれば OK
22
git lfs ls-files
23. Git LFS の管理下にファイルがない場合
• git.exe(実行ファイル)の場所を開いて、同じ場所に git-
lfs.exe(実行ファイル)があるか確認
• 実行ファイルの場所が分からない場合、Windows であれば
MasterSeeker でサーチすると見つけやすい
• Mac の場合「/usr/bin/git」あたりに大体ある
23
27. Q. クローンやプルが失敗する
• 差分に Git LFS で管理するファイルが大量だと
高確率でエラーが出てそのままクローンやプルが失敗する
• もれなく中途半端に落ちてきてしまったファイルが
作業コピーに入ったまま残るオマケつき
「作業コピーに 2000 くらいファイルが入ってる」
「何度やってもクローン失敗するよ!?」
27
28. 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 ほにゃらら
29. A. クローンやプルが失敗する(クローン)
• Git LFS 関連の処理をスキップしてクローン
• git clone が終わったら、指定したフォルダへ cd で移動して
Git LFS 関連のファイルをプル
29
GIT_LFS_SKIP_SMUDGE=1 git clone https://○○.git
git lfs pull
30. A. クローンやプルが失敗する(プル)
• Git LFS 関連の処理をスキップしてプル
• git pull が終わったら Git LFS 関連のファイルをプル
30
GIT_LFS_SKIP_SMUDGE=1 git pull
git lfs pull
33. Q. 何度もログイン情報を聞かれる
• ファイル 100 件ごとにユーザー名とパスワードを聞かれる
(HTTPS の場合)
• 3000 件以上 Git LFS 管理ファイルがあり大変な目に…
「何十回ユーザー名とパスワード入れれば良いん!?」
33
34. 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
アップグレード