大きめのファイルを git で管理したいとき git-lfs を導入すると思うけど、設定忘れることあるのでメモ
まず
~ Git LFS は、リポジトリに実際のファイルではなく、ファイルへの参照を保存することで大きなファイルを扱います。 Git のアーキテクチャを回避するために、Git LFS は実際のファイル(これはどこか別の場所に保存されます)への参照として働くポインタファイルを作成します。 GitHub はこのポインタファイルをリポジトリ中で管理します。 リポジトリをクローンすると、GitHub はこのポインタファイルを大きなファイルを見つけるための地図として使います。 引用 : Git Large File Storage について ~
リポジトリ共有するときに
git-lfs で管理しているリポジトリを誰かと共有するときは、 共有する相手が git-lfs 入れているかをまず確認する。 確認しないでコミットされちゃったりするとあとで変更が面倒。
導入
mac
brew install git-lfs
linux https://packagecloud.io/github/git-lfs/install
リポジトリに lfs を導入するとき。最初
git lfs install
Git LFS を使用したリポジトリのクローン
git lfs clone <gitリポジトリ>
拡張子を管理対象にしたいとき
.psd を管理対象にしたいとき
git lfs track "*.psd"
管理対象のファイルの一覧を確認
git lfs ls-files
管理対象がどれか確認したいとき
git lfs track
大きめのファイルを検索したいとき
find . -size +100M -ls
unity プロジェクトの.gitattrigutes の例
.gitattributes
*.cs diff=csharp text
*.cginc text
*.shader text
*.mat merge=unityyamlmerge eol=lf
*.anim merge=unityyamlmerge eol=lf
*.unity merge=unityyamlmerge eol=lf
*.physicsMaterial2D merge=unityyamlmerge eol=lf
*.physicsMaterial merge=unityyamlmerge eol=lf
*.asset merge=unityyamlmerge eol=lf
*.meta merge=unityyamlmerge eol=lf
*.controller merge=unityyamlmerge eol=lf
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.tiff filter=lfs diff=lfs merge=lfs -text
*.bmp filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.otf filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.aiff filter=lfs diff=lfs merge=lfs -text
*.mov filter=lfs diff=lfs merge=lfs -text
*.avi filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.dll filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.unitypackage filter=lfs diff=lfs merge=lfs -text
エラー出たりしたとき
Encountered 1 file(s) that should have been pointers, but weren't:
git update-index --assume-unchanged -- 対象のファイル
# 量が多いとき
git status -s | cut -c 4- | xargs git update-index --assume-unchanged
git-lfs 対象なのにポインタになっていないファイルがあるのが原因。まとめて lfs にするとき。
rm .git/index && git reset
git add .
git commit