Gestion des versions avec Git
Notions théoriques
Pourquoi versionner un projet ASP.NET Core ?
Git permet de suivre l'évolution du code, de revenir à une version antérieure et de collaborer en équipe. Pour un projet .NET, certains fichiers ne doivent jamais être versionnés :
bin/etobj/: fichiers compilés (régénérés automatiquement).vs/: paramètres Visual Studio locauxappsettings.Development.json: secrets de développement (mots de passe, clés API)
Le fichier appsettings.json contient la chaîne de connexion à la base de données avec l'identifiant et le mot de passe. Ne le committez jamais si vous travaillez sur un dépôt public.
En production, utilisez les variables d'environnement ou les Secrets Manager (.NET User Secrets, Azure Key Vault).
Le fichier .gitignore pour C# / .NET
Le fichier .gitignore liste les fichiers et dossiers que Git doit ignorer. Pour un projet .NET, voici les entrées essentielles :
## Dossiers de compilation (régénérés par dotnet build)
bin/
obj/
## Paramètres Visual Studio
.vs/
*.user
## Fichier de secrets de développement (contient mots de passe)
appsettings.Development.json
## Clés de certificat SSL local
*.pfx
## Logs
*.log
## macOS
.DS_Store
## JetBrains Rider
.idea/
| Framework | Fichier de secrets | Ignoré dans .gitignore |
|---|---|---|
| ASP.NET Core | appsettings.Development.json | Oui |
| Symfony | .env.local | Oui |
| Spring Boot | application-dev.properties | Oui |
Dans tous les frameworks, le principe est identique : un fichier de config pour la production (commité, sans secrets) et un fichier local (ignoré, avec les vrais mots de passe).
Séparer config production et config développement
ASP.NET Core charge automatiquement la configuration selon l'environnement :
appsettings.json (commité — valeurs génériques ou de production) :
{
"Logging": {
"LogLevel": {
"Default": "Information"
}
},
"ConnectionStrings": {
"DefaultConnection": "Server=prod-server;Database=MonBlog;..."
}
}
appsettings.Development.json (ignoré par Git — secrets locaux) :
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=monblog_dev;User=root;Password=secret;"
}
}
Quand ASPNETCORE_ENVIRONMENT=Development, le fichier appsettings.Development.json surcharge appsettings.json.
Initialiser Git et faire le premier commit
# Initialiser le dépôt
git init
# Vérifier ce que Git détecte (avant .gitignore)
git status
# Créer le .gitignore
# (voir contenu ci-dessus)
# Vérifier que bin/ et obj/ sont ignorés
git status
# bin/ et obj/ ne doivent plus apparaître
# Premier commit
git add .
git commit -m "Initial commit : projet MonBlog ASP.NET Core MVC"
Pousser sur GitHub
# Créer un dépôt sur GitHub, puis :
git remote add origin https://github.com/votre-compte/MonBlog.git
git branch -M main
git push -u origin main
Exemple pratique
Voici le .gitignore complet recommandé pour un projet ASP.NET Core MVC avec MySQL :
# Compilation .NET
bin/
obj/
# Visual Studio
.vs/
*.user
*.suo
# VS Code
.vscode/
!.vscode/launch.json
!.vscode/tasks.json
# JetBrains Rider
.idea/
# Secrets et config locale
appsettings.Development.json
*.pfx
*.key
# Logs
*.log
logs/
# NuGet
*.nupkg
.nuget/
# macOS
.DS_Store
# Windows
Thumbs.db
Même si vous avez ajouté appsettings.Development.json au .gitignore après l'avoir commité, Git continue à le suivre. Il faut alors l'enlever du suivi avec :
git rm --cached appsettings.Development.json
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Vous allez configurer Git pour votre projet MonBlog, protéger vos secrets et effectuer le premier commit.
Étape 1 — Créer le fichier .gitignore
Créez le fichier .gitignore à la racine du projet MonBlog avec les entrées essentielles pour .NET.
La commande dotnet new gitignore génère un .gitignore maintenu par l'équipe .NET, qui couvre tous les cas (Visual Studio, VS Code, Rider, macOS, Windows). Ajoutez ensuite manuellement appsettings.Development.json si ce n'est pas déjà inclus.
Étape 2 — Vérifier que les secrets sont protégés
Avant de committer, vérifiez que appsettings.Development.json et les dossiers bin//obj/ sont bien ignorés.
Avant chaque git commit, exécutez git status et git diff --staged pour vérifier exactement ce que vous allez committer. Une erreur de configuration du .gitignore peut exposer des mots de passe sur GitHub.
Étape 3 — Effectuer le premier commit
Un bon message de commit décrit ce qui a changé et pourquoi, pas comment. Exemples :
- Bien :
"feat: ajouter la page de liste des articles" - Moins bien :
"modif fichier"
Certaines équipes adoptent la convention Conventional Commits (feat:, fix:, docs:, refactor:...).