Git et .gitignore pour ignorer certains types de fichiers dans un projet

I. Présentation

Dans ce tutoriel, nous allons apprendre à configurer un projet Git afin d'ignorer certains fichiers pourtant situés dans le répertoire tracké par Git. Lorsqu'un fichier est présent dans un répertoire d'un projet Git, ce fichier peut avoir plusieurs états. En effet, soit le fichier n'est pas surveillé (ou non tracké, si vous préférez), soit le fichier est surveillé (ajouté au projet via un git add) donc Git va suivre les changements apportés à ce fichier, soit le fichier est ignoré, car Git a reçu la consigne de ne pas le surveiller.

Pour indiquer à Git qu'il doit ignorer certains fichiers, il est nécessaire de créer et maintenir un fichier nommé ".gitignore" dans le répertoire du projet. Bien souvent, ce fichier sert à indiquer à Git qu'il ne doit pas tenir compte des fichiers avec l'extension ".log", à certains fichiers de cache, des fichiers système comme ".DS_Store", ou encore à des fichiers temporaires avec l'extension ".tmp". Certains langages ou logiciels de développement peuvent créer leurs propres fichiers et venir polluer, en quelque sorte, votre projet.

Si vous êtes en train de lire ce tutoriel, il y a des chances que vous cherchiez à exclure certains fichiers du périmètre de votre projet Git : c'est peut-être pour l'une des raisons citées précédemment ou pour une autre raison.

Dans cet exemple, je vais chercher à exclure les fichiers ".log" de mon projet "demo-git" mais je vais en profiter pour vous donner d'autres exemples.

II. Créer le fichier .gitignore

Le fichier .gitignore doit être créé manuellement, car il n'existe pas de commande pour le générer et il n'est pas présent par défaut. Pour cela, créez simplement le fichier avec l'interface graphique ou la ligne de commande à la racine de votre projet Git.

Sous Linux :

touch .gitignore

Sous Windows :

New-Item .gitignore

Ce fichier et les exclusions qu'il va contenir vont s'appliquer uniquement à ce projet Git. Si vous avez besoin d'appliquer des règles communes à tout vos projets Git, vous pouvez définir un fichier .gitignore global. Attention, ce fichier global reste en local alors il ne sera pas partagé avec les autres personnes qui travaillent sur ce projet, ce qui peut être un inconvénient.

git config --global core.excludesfile ~/.gitignore_global

III. Editer et tester le fichier .gitignore

À partir d'un éditeur de texte, le fichier .gitignore que l'on vient de créer doit être édité. Je vous recommande d'ajouter un commentaire avant chaque règle pour assurer un bon suivi de ce fichier. Pour ajouter un commentaire, il faut ajouter le symbole "#" en début de ligne. Ensuite, l'astérisque permet de remplacer tous les caractères X fois donc pour ignorer tous les fichiers ".log", on va ajouter "*.log" comme ceci :

# Ignorer tous les fichiers .log
*.log

Ensuite, il faut ajouter ce nouveau fichier à Git :

git add .gitignore

Pour tester, il suffit de créer un fichier ".log" dans le répertoire du projet. Si l'on effectue un "git status", on peut voir qu'il ne demande pas à ce que ce nouveau fichier soit tracké car il a compris qu'il devait l'ignorer.

git status

Voici un exemple :

Si vous souhaitez ignorer tous les fichiers de logs du répertoire "logs" situé à la racine de votre projet, la syntaxe est différente :

# Ignorer tous les fichiers .log sous le répertoire "/logs/"
/logs/*.log

Ainsi, on considère qu'un fichier "test.log" à la racine du projet doit être tracké par Git.

Dans le même esprit, on peut ignorer un fichier avec un nom spécifique :

# Ignorer le fichier test.log
test.log

Il est également possible de créer des filtres un peu plus avancé....

test[123].log

Ce filtre va permettre d'exclure les fichiers "test1.log", "test2.log" et "test3.log" mais pas "test4.log", ni même "test123.log". Une condition que l'on peut inverser en ajoutant "!", comme ceci :

test[!123].log

Ainsi, on exclue "test4.log" et "test123.log" mais pas "test1.log", "test2.log" et "test3.log".

Pour exclure un répertoire, par exemple le répertoire "/logs" situé à la racine du projet :

/logs

Si l'on n'indique pas le "/" au début, cela va exclure tous les répertoires nommés "logs" (/logs, /sous-dossier1/logs, etc.) en utilisant ce filtre

logs/

Remarque : si vous souhaitez exclure du tracking Git un fichier qui était jusqu'ici pris en compte, vous pouvez le faire avec cette commande (exemple avec test.log) :

git rm --cached test.log

Il conviendra ensuite de réaliser un commit pour appliquer ce changement. Si le fichier .gitignore exclue ce fichier, Git ne cherchera plus à le surveiller.

IV. Conclusion

Suite à la lecture de ce tutoriel, vous êtes en mesure de créer un fichier .gitignore afin des filtres simples pour exclure un dossier, un fichier ou un ensemble de fichiers de la surveillance Git. Pour aller plus loin et trouver le fichier .gitignore de vos rêves, vous pouvez vous inspirer de ces deux sites :

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5548.Voir tous les posts

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.