« Si un fichier appartient au projet, il doit être committé. »
Le dépôt conserve les sources et les décisions. Beaucoup de fichiers nécessaires à l’exécution doivent être reconstruits, téléchargés ou restaurés depuis un stockage spécialisé.
01Classe avant d’ajouter
02Observe l’impact sur Git
git count-objects -vH
git rev-list --objects --all \
| git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' \
| sort -k3nr \
| head
Une suppression ultérieure ne retire pas le blob des commits précédents. Les fichiers lourds augmentent clone, fetch, sauvegarde et maintenance.
03Ignore les sorties reproductibles
dist/
artifacts/
*.log
*.iso
*.qcow2
.cache/
git check-ignore -v dist/app.tar.gz
git status --ignored --short
git ls-files dist artifacts
.gitignore n’agit pas sur un fichier déjà suivi. Retire-le de l’index avec une décision explicite et conserve la source qui permet de le reconstruire.
04Décris les binaires
*.png binary
*.zip binary
*.pdf binary
Cette déclaration évite des diffs texte inutiles. Elle ne déplace pas le fichier vers un autre stockage et ne réduit pas sa taille historique.
05Comprends Git LFS
git lfs install
git lfs track '*.psd'
git add .gitattributes design/example.psd
git commit -m "design: add versioned source asset"
Dans Git : petit fichier pointeur
Dans LFS : contenu binaire correspondant à l’OID
Avant adoption, vérifie disponibilité, quotas, archivage, sauvegarde, restauration, droits et comportement des forks ou pipelines.
06Utilise le bon registre
Image OCI Harbor / registre d’images
Package registre npm, PyPI, Maven…
Archive de release GitHub Release / stockage objet
Artefact CI stockage du pipeline avec rétention
Backup dépôt de sauvegarde, jamais Git
Un registre gère versions, métadonnées, politiques de rétention et parfois signature ou vulnérabilités. Git conserve le manifest et la référence immuable.
07Versionne la recette, pas la sortie
# suivi
Dockerfile
package-lock.json
scripts/build.sh
# non suivi
dist/application.tar.gz
node_modules/
coverage/
La CI doit pouvoir reproduire l’artefact à partir du commit et des dépendances verrouillées. Conserve ensuite checksum, provenance et durée de rétention.
08Traite un gros fichier déjà committé
1. Bloquer les nouveaux pushes concernés.
2. Décider s’il faut seulement arrêter le suivi ou réécrire.
3. Migrer vers le stockage choisi.
4. Mettre à jour références et documentation.
5. Valider clones et pipelines.
6. Coordonner la réécriture si elle est nécessaire.
La procédure rejoint alors les risques de la leçon précédente : changement de SHA, force updates et clones anciens.
Écris la politique d’artefacts
À partir du lab, classe chaque fichier du projet PME. Justifie Git, ignore, release, Harbor, stockage objet ou sauvegarde, puis définis rétention et restauration.
✓À retenir
Git doit rester un historique de sources et de décisions. Un binaire n’y entre que si sa valeur de versionnement justifie durablement le coût de stockage, de transfert et de gouvernance.