GIT - 16 Exclusion des fichiers indésirables
Dans cette leçon, nous allons exclure des fichiers et dossiers de Git pour ne pas les suivre dans le repository. Je suis dans le repository test, sur la branche master, avec un working directory propre. Mes deux fichiers suivis sont venus.txt et coucou.html. Imaginons que ce repository soit une application qui génère des logs à l'exécution.
Le problème : fichiers indésirables
Créons un fichier application.log avec quelques lignes aléatoires pour simuler un log :
touch application.log
ls
Un git status détecte ce nouveau fichier. Or, on ne veut pas versionner les logs (ni les builds, ni les dépendances type node_modules/, ni les fichiers générés en général). Sans précaution, on risque de les ajouter par erreur lors d'un git add -A et de polluer le repository.
La solution : le fichier .gitignore
Git propose un mécanisme dédié pour exclure des fichiers : le fichier .gitignore à la racine du repository. Sa syntaxe : un motif par ligne, avec support des wildcards.
# .gitignore
*.log
application.log: cible un fichier précis*.log: cible tous les fichiers se terminant par.log(recommandé)build/: cible un dossier entier**/temp: récursif, dans tout le repository
De retour au terminal, git status ne mentionne plus application.log — il est ignoré. En revanche, le fichier .gitignore lui-même doit être suivi par Git et partagé avec l'équipe :
git add .gitignore
git commit -m "ajout du .gitignore"
Le fichier application.log existe toujours sur le disque mais ne sera jamais commité. Pour le supprimer définitivement, un simple rm application.log suffit. Bonne pratique : créer le .gitignore dès l'initialisation du projet, avant tout commit.
En résumé
Cette leçon explique comment exclure les fichiers et dossiers indésirables d'un dépôt Git en utilisant le fichier `.gitignore`. À travers l'exemple concret d'un fichier de log d'application, on découvre comment créer ce fichier, y ajouter des patterns avec expressions glob (comme `*.log` pour tous les fichiers journaux), puis le committer pour que Git ignore automatiquement ces fichiers lors des commits futurs. Cela permet de garder le dépôt propre en excluant les fichiers générés qui ne font pas partie du code source.
Points clés
- Le fichier `.gitignore` permet d'ignorer automatiquement des fichiers et dossiers spécifiques dans Git
- On peut utiliser des patterns glob (expressions régulières) comme `*.log` pour exclure tous les fichiers d'un certain type
- Le fichier `.gitignore` lui-même doit être committé et suivi dans le dépôt pour que toute l'équipe applique les mêmes exclusions
- Les fichiers ignorés restent dans le système de fichiers local mais ne sont jamais ajoutés à l'historique Git
- Utiliser `git status` permet de vérifier que les fichiers sont correctement exclus
- C'est une meilleure pratique que d'oublier manuellement certains fichiers à chaque commit
Questions fréquentes
Pourquoi créer un fichier `.gitignore` au lieu d'exclure les fichiers individuellement?
C'est bien plus pratique et fiable. Plutôt que de se souvenir d'exclure manuellement certains fichiers à chaque commit (et risquer d'oublier), le `.gitignore` exclut automatiquement tous les fichiers correspondant aux patterns définis. Cela garantit la cohérence sur tout le dépôt et pour tous les collaborateurs.
Comment exclure tous les fichiers d'un certain type, par exemple tous les `.log`?
Utilisez un pattern glob dans le fichier `.gitignore`. Par exemple, écrivez `*.log` pour exclure tous les fichiers terminant par `.log`. Ce pattern s'applique à tous les fichiers du dépôt qui correspondent à cette expression.
Est-ce que le fichier `.gitignore` doit être committé dans le dépôt?
Oui, absolument. Le `.gitignore` doit être suivi et committé dans le dépôt pour que tous les collaborateurs du projet ignorent les mêmes fichiers. C'est un fichier de configuration important qui doit être partagé au sein de l'équipe.