.gitattributesでのGit LFSパターン

PSDファイル、動画、データセットなどの大きなバイナリアセットをリポジトリサイズを膨張させずに追跡するためのGit Large File Storage(LFS)用の.gitattributes設定方法。

Binary Files

詳細な説明

Git LFSと.gitattributes

Git Large File Storage(LFS)は、Git内の大きなファイルをテキストポインターに置き換え、実際のファイル内容を別のサーバーに保存します。.gitattributesファイルは、どのファイルをLFSで管理すべきかをGitに伝える手段です。

LFS属性の構文

# デザインアセット
*.psd    filter=lfs diff=lfs merge=lfs -text
*.ai     filter=lfs diff=lfs merge=lfs -text
*.sketch filter=lfs diff=lfs merge=lfs -text
*.fig    filter=lfs diff=lfs merge=lfs -text

# 動画/音声
*.mp4    filter=lfs diff=lfs merge=lfs -text
*.mov    filter=lfs diff=lfs merge=lfs -text
*.mp3    filter=lfs diff=lfs merge=lfs -text
*.wav    filter=lfs diff=lfs merge=lfs -text

# 3Dモデル
*.fbx    filter=lfs diff=lfs merge=lfs -text
*.obj    filter=lfs diff=lfs merge=lfs -text
*.blend  filter=lfs diff=lfs merge=lfs -text

# データファイル
*.sqlite filter=lfs diff=lfs merge=lfs -text
*.db     filter=lfs diff=lfs merge=lfs -text

属性の連携

属性 目的
filter=lfs ファイル内容をLFSのclean/smudgeフィルターに通す
diff=lfs LFS diffドライバーを使用(バイナリdiffではなくポインター変更を表示)
merge=lfs LFSマージドライバーを使用
-text 行末の正規化を防止

LFSのセットアップ

これらの属性が効果を発揮するには、Git LFSをインストールして初期化する必要があります:

git lfs install
git lfs track "*.psd"  # .gitattributesを自動編集

git lfs trackコマンドは.gitattributesを自動的に変更しますが、構文を理解することで、より複雑なパターンを手動で設定できます。

サイズの目安

LFSに入れるべきファイルの一般的なガイドライン:

  • 頻繁に変更される10MB以上のファイル → 確実にLFSを使用
  • バイナリで1MB以上のファイル → LFSを検討
  • 1MB未満のファイル → 通常はLFSなしで問題なし
  • 任意のサイズのテキストファイル → LFSは使用しない(Gitが効率的に処理)

LFS vs 標準binary

小さなバイナリファイル(アイコン、小さな画像)には標準のbinary属性で十分です。リポジトリの肥大化が現実的な懸念となるファイルにLFSを使用してください。

ユースケース

大きなバイナリアセット(PSDファイル、3Dモデル、データセット、動画)をコードと一緒に保存するゲーム開発スタジオ、デザインチーム、データサイエンスプロジェクトはGit LFSパターンの恩恵を受けます。クローン時間を管理可能にし、リポジトリストレージコストを削減します。

試してみる — .gitattributes Generator

フルツールを開く