Installation
# Linux (apt)
sudo apt install git-lfs
# Linux (dnf)
sudo dnf install git-lfs
# macOS
brew install git-lfs
# Windows
winget install GitHub.GitLFS
# Activer (une seule fois par machine)
git lfs install # config utilisateur (~/.gitconfig)
git lfs install --local # config dépôt seulement
git lfs install --system # config machine entière
# Vérifier
git lfs version
git lfs env # config LFS complète
Tracking - Suivre des fichiers
# Déclarer les patterns à suivre via LFS
git lfs track "*.psd" # tous les PSD
git lfs track "*.png" # tous les PNG
git lfs track "assets/**" # tout le dossier assets
git lfs track "*.fbx" "*.blend" # plusieurs patterns
# Arrêter le suivi
git lfs untrack "*.png"
# Vérifier la config
cat .gitattributes # fichier de config LFS
git lfs track # lister les patterns actifs
# IMPORTANT : commiter .gitattributes !
git add .gitattributes
git commit -m "Configure LFS tracking"
Opérations courantes
# Workflow normal (identique à git standard)
git add mon-fichier.psd
git commit -m "Ajout asset"
git push # LFS upload automatique
# Commandes spécifiques
git lfs ls-files # lister les fichiers gérés par LFS
git lfs ls-files -s # avec taille et hash
git lfs push --all origin # forcer l'upload de tous les fichiers
git lfs pull # télécharger tous les fichiers LFS
git lfs fetch # télécharger sans checkout
git lfs fetch --all # tous les fichiers de tout l'historique
git lfs fetch --recent # fichiers récemment modifiés
# Vérifier l'état
git lfs status # fichiers en attente d'upload
Locking - Verrouillage de fichiers
# Verrouiller un fichier (empêche les autres de le modifier)
git lfs lock assets/perso.psd
git lfs lock "niveau/*.umap"
# Déverrouiller
git lfs unlock assets/perso.psd
git lfs unlock --force assets/perso.psd # forcer (admin)
git lfs unlock --id 123 # par ID
# Lister les verrous
git lfs locks # tous les verrous actifs
git lfs locks --verify # vérifier les conflits
# Configurer le locking automatique
# Dans .gitattributes :
# *.psd lockable
# *.umap lockable
Migration
# Migrer des fichiers existants vers LFS
git lfs migrate import --include="*.psd,*.png"
# Réécrit l'historique ! Les SHA changent.
# Migrer TOUT l'historique
git lfs migrate import --include="*.psd" --everything
# Migrer seulement certaines branches
git lfs migrate import --include="*.psd" --include-ref=main
# Sortir des fichiers de LFS (retour en Git normal)
git lfs migrate export --include="*.txt"
# Vérifier ce qui pourrait être migré
git lfs migrate info # fichiers volumineux
git lfs migrate info --above=1mb # au-dessus de 1 Mo
Patterns par domaine
Jeux vidéo
# Textures / images
*.psd *.png *.jpg *.tga *.bmp *.tif *.exr *.hdr
# Modèles 3D
*.fbx *.blend *.obj *.dae *.3ds *.max *.ma *.mb
# Audio
*.wav *.mp3 *.ogg *.flac *.bank
# Vidéo
*.mp4 *.mov *.avi
# Moteurs
*.uasset *.umap # Unreal Engine
# Unity : *.unity *.prefab *.asset sont du YAML texte si Force Text
# est actif. LFS optionnel (utile seulement si très volumineux).
*.png *.ogg *.mp3 *.glb *.blend # Godot (vrais binaires uniquement)
# Note Godot : *.tscn *.tres sont du texte (S-expression), pas de LFS
Data Science / ML
*.pkl *.pickle # Python serialization
*.h5 *.hdf5 # HDF5 (Keras, etc.)
*.pt *.pth # PyTorch
*.onnx # ONNX
*.parquet *.feather # colonnes
*.csv # gros datasets (>10 Mo)
*.safetensors *.bin # modèles LLM
Design
*.psd *.psb # Photoshop
*.ai # Illustrator
*.sketch # Sketch
*.fig # Figma (exports)
*.pdf # documents
*.indd # InDesign
Diagnostic
git lfs env # config complète (endpoint, hooks, etc.)
git lfs status # fichiers en attente / problèmes
git lfs logs last # derniers logs détaillés
git lfs fsck # vérifier l'intégrité des fichiers LFS
git lfs prune # supprimer les fichiers locaux obsolètes
git lfs prune --dry-run # simuler le nettoyage
Exemple .gitattributes complet (JV)
# -- Git LFS - Projet Jeu Vidéo --
# Textures
*.psd filter=lfs diff=lfs merge=lfs -text lockable
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
# Modèles 3D
*.fbx filter=lfs diff=lfs merge=lfs -text lockable
*.blend filter=lfs diff=lfs merge=lfs -text lockable
*.obj filter=lfs diff=lfs merge=lfs -text
# Audio
*.wav filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
# Unreal Engine
*.uasset filter=lfs diff=lfs merge=lfs -text lockable
*.umap filter=lfs diff=lfs merge=lfs -text lockable
# Unity - *.unity et *.prefab sont du YAML texte si Force Text est actif.
# Ne les mets dans LFS que si les fichiers sont très volumineux malgré le format texte.
# *.unity filter=lfs diff=lfs merge=lfs -text lockable
# *.prefab filter=lfs diff=lfs merge=lfs -text