Aller au contenu principal

Utilisation des Fichiers .gitignore


Table des matières


  1. Qu'est-ce que .gitignore ?
  2. Syntaxe de base
  3. Patterns courants
  4. Templates par langage
  5. .gitignore global
  6. Problèmes courants
  7. Bonnes pratiques


1 - Qu'est-ce que .gitignore ?



Le fichier .gitignore indique à Git quels fichiers ou dossiers ne pas suivre.

Pourquoi ignorer des fichiers ?

Type de fichierExempleRaison
Dépendancesnode_modules/Trop volumineux, recréables
Builddist/, build/Générés automatiquement
Secrets.env, secrets.jsonSécurité !
IDE.vscode/, .idea/Préférences personnelles
OS.DS_Store, Thumbs.dbFichiers système
Logs*.logTemporaires
Cache__pycache__/, .cache/Recréables

Créer un .gitignore

# À la racine du projet
touch .gitignore

🔝 Retour à la table des matières



2 - Syntaxe de base



Règles simples

# Ceci est un commentaire

# Ignorer un fichier spécifique
secret.txt

# Ignorer un dossier
node_modules/

# Ignorer par extension
*.log
*.tmp

# Ignorer dans tous les sous-dossiers
**/temp/

# Négation (ne PAS ignorer)
!important.log

Syntaxe des patterns

PatternSignificationExemple
file.txtFichier exactfile.txt
*.txtTous les .txtreadme.txt, notes.txt
folder/Dossier entierfolder/ et son contenu
folder/*Contenu du dossierFichiers dans folder/
**/logslogs n'importe oùa/logs, a/b/logs
logs/**Tout dans logslogs/a, logs/a/b
!file.txtExceptionNe pas ignorer file.txt
[abc].txta.txt, b.txt, c.txtClasse de caractères
file?.txtfile1.txt, fileA.txtUn caractère quelconque

🔝 Retour à la table des matières



3 - Patterns courants



Fichiers de configuration secrets

# Variables d'environnement
.env
.env.local
.env.*.local

# Fichiers de secrets
secrets.json
credentials.json
*.pem
*.key

Dépendances

# Node.js
node_modules/
package-lock.json # Optionnel

# Python
venv/
__pycache__/
*.pyc

# PHP
vendor/

# Java
target/
*.jar

Build et output

# Build
dist/
build/
out/
*.min.js
*.min.css

# Coverage
coverage/
.nyc_output/

IDE et éditeurs

# VS Code
.vscode/
!.vscode/settings.json # Garder les settings partagés

# JetBrains (IntelliJ, WebStorm, PyCharm)
.idea/
*.iml

# Vim
*.swp
*.swo

# Emacs
*~

Système d'exploitation

# macOS
.DS_Store
.AppleDouble
.LSOverride

# Windows
Thumbs.db
ehthumbs.db
Desktop.ini

# Linux
*~
.nfs*

🔝 Retour à la table des matières



4 - Templates par langage



Node.js / JavaScript

# Dependencies
node_modules/

# Build
dist/
build/

# Environment
.env
.env.local
.env.*.local

# Logs
logs/
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# IDE
.vscode/
.idea/

# OS
.DS_Store
Thumbs.db

# Testing
coverage/

# Cache
.cache/
.parcel-cache/

Python

# Byte-compiled
__pycache__/
*.py[cod]
*$py.class

# Virtual environment
venv/
ENV/
.venv/

# Distribution
dist/
build/
*.egg-info/

# IDE
.idea/
.vscode/
*.swp

# Jupyter
.ipynb_checkpoints/

# Environment
.env

# Testing
.pytest_cache/
.coverage
htmlcov/

Java / Spring Boot

# Build
target/
build/

# IDE
.idea/
*.iml
.project
.classpath
.settings/

# Logs
*.log

# Maven
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup

# Gradle
.gradle/
gradle-app.setting
!gradle-wrapper.jar

Ressource : gitignore.io

Générez automatiquement un .gitignore :

👉 https://www.toptal.com/developers/gitignore

🔝 Retour à la table des matières



5 - .gitignore global



Configuration globale

Pour ignorer des fichiers dans tous vos projets :

# Créer le fichier global
touch ~/.gitignore_global

# Configurer Git pour l'utiliser
git config --global core.excludesFile ~/.gitignore_global

Contenu recommandé pour ~/.gitignore_global

# macOS
.DS_Store
.AppleDouble
.LSOverride
._*

# Windows
Thumbs.db
ehthumbs.db
Desktop.ini

# IDE
.idea/
*.swp
*.swo
*~

# Logs généraux
*.log

Quand utiliser global vs local ?

TypeGlobalLocal (.gitignore du projet)
Fichiers OS
Préférences IDE perso
Dépendances projet
Config projet
Fichiers build

🔝 Retour à la table des matières



6 - Problèmes courants



Problème 1 : Le fichier est déjà suivi

Symptôme : Vous ajoutez un fichier au .gitignore mais il est toujours suivi.

Cause : Le fichier a été ajouté avant le .gitignore.

Solution :

# Retirer du suivi (garder le fichier localement)
git rm --cached fichier.txt

# Pour un dossier
git rm -r --cached dossier/

# Commiter
git commit -m "chore: stop tracking fichier.txt"

Problème 2 : Ignorer tout sauf certains fichiers

# Ignorer tout dans logs/
logs/*

# Sauf .gitkeep
!logs/.gitkeep

Problème 3 : .gitignore ne fonctionne pas

Vérifications :

  1. Le fichier est-il bien nommé .gitignore (avec le point) ?
  2. Y a-t-il des espaces en fin de ligne ?
  3. Le fichier a-t-il le bon encodage (UTF-8) ?
# Vérifier ce qui est ignoré
git check-ignore -v fichier.txt

# Voir tous les fichiers ignorés
git status --ignored

Problème 4 : Secret commité par erreur

# 1. Ajouter au .gitignore
echo "secret.env" >> .gitignore

# 2. Retirer du suivi
git rm --cached secret.env

# 3. Commiter
git commit -m "security: remove secret from tracking"

# 4. IMPORTANT : Changer les secrets compromis !
# L'historique Git contient toujours le fichier

⚠️ Pour supprimer complètement un secret de l'historique, utilisez git filter-branch ou BFG Repo-Cleaner.

🔝 Retour à la table des matières



7 - Bonnes pratiques



✅ À faire

  1. Créer le .gitignore dès le début du projet
  2. Utiliser des templates (gitignore.io)
  3. Ne jamais commiter de secrets
  4. Documenter les fichiers ignorés inhabituels

❌ À éviter

  1. Ignorer des fichiers essentiels (package.json, requirements.txt)
  2. Ignorer le .gitignore lui-même
  3. Ignorer des fichiers de config partagés (.editorconfig)

Structure de projet recommandée

mon-projet/
├── .gitignore # Ignorer fichiers du projet
├── .env.example # Template pour .env (commité)
├── .env # Variables réelles (ignoré)
├── package.json # Commité
├── node_modules/ # Ignoré
├── dist/ # Ignoré
└── src/
└── ...

Exemple complet .gitignore

# ===============================
# Dependencies
# ===============================
node_modules/
vendor/

# ===============================
# Build & Output
# ===============================
dist/
build/
*.min.js
*.min.css

# ===============================
# Environment & Secrets
# ===============================
.env
.env.local
.env.*.local
*.pem
secrets/

# ===============================
# IDE & Editors
# ===============================
.idea/
.vscode/
*.swp
*.swo

# ===============================
# OS Files
# ===============================
.DS_Store
Thumbs.db

# ===============================
# Logs & Cache
# ===============================
logs/
*.log
.cache/

# ===============================
# Testing
# ===============================
coverage/
.nyc_output/

🔝 Retour à la table des matières