Aller au contenu principal

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/ et obj/ : fichiers compilés (régénérés automatiquement)
  • .vs/ : paramètres Visual Studio locaux
  • appsettings.Development.json : secrets de développement (mots de passe, clés API)
Sécurité — Ne jamais committer vos secrets

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/
Comparaison avec Symfony et Spring Boot
FrameworkFichier de secretsIgnoré dans .gitignore
ASP.NET Coreappsettings.Development.jsonOui
Symfony.env.localOui
Spring Bootapplication-dev.propertiesOui

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
attention

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


Quel dossier contient les fichiers compilés d'un projet .NET et doit être ignoré par Git ?


Quel fichier ASP.NET Core contient les secrets de développement (mots de passe, etc.) et ne doit pas être commité ?


Quelle commande git retire un fichier du suivi de version sans le supprimer du disque ?


Quel est l'équivalent de appsettings.Development.json dans Symfony ?


Quelle commande git affiche l'état actuel du dépôt (fichiers modifiés, non suivis...) ?


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.


Bonne pratique - Utiliser le template officiel

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.


Bonne pratique - Toujours vérifier avant de committer

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


Bonne pratique - Messages de commit descriptifs

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:...).

📌 Une solution