Gestion des versions avec Git
Notions théoriques
Pourquoi versionner son projet Spring Boot ?
Comme pour Symfony, il est indispensable de versionner son code source dès le début du projet. Git permet de :
- Sauvegarder l'historique de chaque modification
- Collaborer sans écraser le travail des autres
- Revenir à une version précédente en cas d'erreur
- Déployer plus facilement sur un serveur
En Symfony, vous avez appris à utiliser Git depuis le premier jour. La démarche est identique en Java. Seul le .gitignore change pour s'adapter aux spécificités de Maven et d'IntelliJ IDEA.
Initialiser Git dans le projet
# Dans le dossier racine du projet Spring Boot
git init
git add .
git commit -m "Initial commit : projet Spring Boot généré via start.spring.io"
Spring Initializr génère automatiquement un fichier .gitignore adapté à Spring Boot. Vous pouvez l'enrichir avec les éléments spécifiques à votre environnement.
Le .gitignore adapté Java/Maven/IntelliJ
# Maven : dossier de build (comme vendor/ en PHP)
target/
# IntelliJ IDEA
.idea/
*.iml
*.iws
*.ipr
# Fichiers Java compilés
*.class
# Fichiers JAR/WAR/EAR
*.jar
*.war
*.ear
# Configuration locale (secrets, comme .env.local en Symfony)
application-local.properties
application-local.yml
# macOS
.DS_Store
# Logs
*.log
logs/
Comme en Symfony où vous ne commitez pas le fichier .env contenant APP_SECRET et DATABASE_URL, en Spring Boot vous ne devez jamais committer le fichier application-local.properties qui contient le mot de passe de la base de données.
Ajoutez application-local.properties au .gitignore avant de créer ce fichier.
Que versionner ou non ?
| Fichier | Committer ? | Raison |
|---|---|---|
pom.xml | Oui | Dépendances du projet |
src/ | Oui | Code source |
application.properties | Oui | Configuration (sans secrets) |
application-local.properties | Non | Contient des secrets |
target/ | Non | Fichiers compilés, recréés par Maven |
.idea/ | Non | Configuration IDE personnelle |
*.class | Non | Bytecode compilé |
Branches et workflow
# Voir les branches existantes
git branch
# Créer une branche pour une nouvelle fonctionnalité
git checkout -b feature/ajout-articles
# Revenir sur la branche principale
git checkout main
# Fusionner la branche
git merge feature/ajout-articles
Publier sur GitHub
# Après avoir créé le dépôt sur github.com
git remote add origin https://github.com/votre-pseudo/monblog.git
git branch -M main
git push -u origin main
Exemple pratique
Voici un exemple de fichier .gitignore complet pour un projet Spring Boot avec IntelliJ IDEA :
# === Maven ===
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
# === IntelliJ IDEA ===
.idea/
*.iml
*.iws
# === Java ===
*.class
# === Secrets Spring Boot ===
**/application-local.properties
**/application-local.yml
**/*-local.properties
# === Logs ===
*.log
spring.log
# === Système ===
.DS_Store
Thumbs.db
spring-boot-starter-parent configure Maven pour produire le build dans target/. Ce dossier peut faire plusieurs dizaines de Mo — versionner ces fichiers compilés n'aurait aucun sens.
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Dans ce TP, vous allez configurer Git sur votre projet MonBlog et faire votre premier commit.
Étape 1 — Vérifier le .gitignore
Spring Initializr génère déjà un .gitignore. Vérifiez qu'il contient bien les entrées importantes. Ajoutez application-local.properties s'il est absent.
Ajoutez toujours une entrée dans .gitignore avant de créer le fichier qu'elle protège. Si vous créez d'abord le fichier et l'ajoutez accidentellement avec git add ., le secret est exposé dans l'historique Git — même si vous le supprimez ensuite.
Étape 2 — Faire le premier commit
Un bon message de commit décrit ce qui change et pourquoi, pas comment. Exemples :
- Bon :
"Ajout de l'entité Article avec ses champs de base" - Mauvais :
"modif"ou"test"ou"update"
Étape 3 — Connecter à GitHub et pousser
Créez un dépôt vide sur github.com, puis reliez votre projet local.
Commitez après chaque fonctionnalité terminée et qui fonctionne. Poussez au moins en fin de journée. Un dépôt distant sert aussi de sauvegarde : si votre ordinateur tombe en panne, vous ne perdez pas votre travail.