À propos de ce cours
Objectifs de la leçon
- Mettre un projet NestJS sous Git et le publier sur GitHub.
- Savoir ce qui doit et ne doit pas être versionné.
- Écrire des messages de commit clairs.
- Travailler avec des branches et des étiquettes de version.
- Récupérer et lancer un projet depuis GitHub.
Pourquoi versionner dès le premier jour ?
- Sauvegarde: un ordinateur perdu ou en panne ne fait pas perdre le travail.
- Historique: on sait ce qui a changé, quand et pourquoi, et on peut revenir en arrière.
- Travail en équipe: plusieurs personnes modifient le même projet sans s'écraser.
- Portfolio: vos dépôts GitHub montrent vos compétences aux recruteurs.
Configurer Git (une seule fois par ordinateur)
git config --global user.name "Prénom Nom"
git config --global user.email "adresse@exemple.com" # celle de votre compte GitHub
git config --global init.defaultBranch main
Le cycle de travail
On prépare (add), on valide (commit), on publie (push) ; pull et clone récupèrent le travail.
git status # que s'est-il passé ?
git add . # préparer toutes les modifications
git commit -m "feat: route GET /version"
git push # publier sur GitHub
git log --oneline # historique résumé
Ce qui ne doit jamais être versionné
Le .gitignore généré par la CLI exclut déjà l'essentiel. Vérifiez qu'il contient au moins :
# dépendances et code compilé : recréés par npm install / npm run build
node_modules/
dist/
# résultats de tests et journaux
coverage/
*.log
# secrets : mots de passe, clés (chapitre 10)
.env
.env.*
!.env.example
# éditeurs
.idea/
Attention aux secrets: un mot de passe de base de données publié sur GitHub, même supprimé plus tard, reste dans l'historique et peut être récupéré. Le fichier .env ne doit jamais être commité. On publie à la place un .env.example avec des valeurs factices.
Des messages de commit clairs
Un bon message dit ce que fait le commit. La convention Conventional Commits est très répandue :
| Préfixe | Usage | Exemple |
|---|---|---|
feat: | nouvelle fonctionnalité | feat: ajout du module stagiaires |
fix: | correction de bug | fix: statut 404 si le stagiaire n'existe pas |
docs: | documentation | docs: instructions d'installation dans le README |
refactor: | restructuration sans changement de comportement | refactor: logique déplacée dans le service |
test: / chore: | tests / maintenance | chore: configuration de Prettier |
À éviter : "modif", "update", "ça marche". Faites des commits petits et fréquents: un commit = une modification cohérente.
Créer le dépôt GitHub et pousser
- Sur github.com/new, créez un dépôt vide portant le nom du projet (sans README, sans .gitignore, sans licence : le projet local les fournit).
- Reliez et poussez :
git remote add origin https://github.com/VOTRE-COMPTE/api-formation.git
git branch -M main
git push -u origin main
Lors du premier push, Git demande de vous authentifier. Sous Windows, le gestionnaire d'identifiants installé avec Git ouvre une fenêtre de connexion GitHub. Ailleurs, utilisez un jeton d'accès personnel (GitHub → Settings → Developer settings → Personal access tokens) à la place du mot de passe, ou la commande gh auth login de GitHub CLI.
Les branches
On ne développe pas directement sur main, qui doit toujours fonctionner. On crée une branche par fonctionnalité :
git switch -c feature/module-groupes # créer la branche et s'y placer
# … travail, commits …
git push -u origin feature/module-groupes
git switch main
git merge feature/module-groupes # ou une Pull Request sur GitHub
Sur GitHub, une Pull Request permet de relire les modifications d'une branche avant de les fusionner dans main: c'est la pratique standard en entreprise.
Les étiquettes de version (tags)
git tag -a v0.1.0 -m "Première version de l'API"
git push origin v0.1.0
Une étiquette marque une version précise du projet (rendu de TP, mise en production). Elle apparaît dans l'onglet Releases / Tags du dépôt.
Récupérer un projet depuis GitHub
git clone https://github.com/VOTRE-COMPTE/api-formation.git
cd api-formation
npm install # recrée node_modules
cp .env.example .env # puis compléter les valeurs
npm run start:dev
Activités
Activité 1 Publier api-formation
- Configurez Git (nom, e-mail) si ce n'est pas fait.
- Vérifiez le
.gitignoredu projetapi-formationet complétez-le si besoin. - Créez le dépôt sur GitHub et poussez le projet.
- Sur GitHub, vérifiez que
node_modulesetdistn'apparaissent pas.
Voir le corrigé
Si node_modules apparaît sur GitHub, c'est qu'il a été commité avant d'être ignoré. Retirez-le de l'index sans le supprimer du disque :
git rm -r --cached node_modules
git commit -m "chore: retrait de node_modules du dépôt"
git push
Activité 2 Travailler sur une branche
Créez la branche feature/route-version, ajoutez la route GET /version (leçon 3.2), faites un commit avec un message conventionnel, poussez la branche, puis fusionnez-la dans main par une Pull Request sur GitHub.
Voir le corrigé
git switch -c feature/route-version
git add src/
git commit -m "feat: route GET /version"
git push -u origin feature/route-version
# Sur GitHub : Compare & pull request → Create → Merge
git switch main
git pull
Activité 3 Repartir de zéro
Dans un autre dossier, clonez votre propre dépôt, installez les dépendances et lancez l'application. Qu'est-ce qui prouve que le dépôt est complet ?
Voir le corrigé
Si git clone puis npm install et npm run start:dev suffisent à faire fonctionner l'API, le dépôt contient tout le nécessaire (code, package.json, package-lock.json, configuration) et rien de superflu. C'est exactement ce que fera l'enseignant pour corriger vos TP.
À retenir
- On versionne dès le premier jour : sauvegarde, historique, travail en équipe.
- node_modules, dist et .env ne sont jamais versionnés ; .env.example l'est.
- Cycle : git add, git commit -m "message clair", git push.
- Une branche par fonctionnalité, fusionnée par Pull Request ; un tag par version.
- git clone + npm install suffisent à récupérer un projet.