Julien Bardin

Julien BARDIN

Lead Developer | Artisan du Code et Résolveur de Problèmes Numériques

🚀 Git pour les développeurs : bases, bonnes pratiques et commandes modernes

1. Introduction

Git est aujourd’hui l’outil de versionnement incontournable pour tout développeur. Il permet de travailler à plusieurs sans écraser le travail des autres, de garder un historique clair et de revenir facilement en arrière en cas de problème.

Pour en tirer le meilleur parti, il faut connaître les bases, adopter de bonnes pratiques comme les Conventional Commits, et utiliser les commandes modernes telles que git switch et git restore.

2. Les bases indispensables de Git

CommandeDescription
git initInitialise un dépôt Git dans un dossier existant.
git clone <url>Copie un dépôt distant en local.
git statusMontre l’état actuel du dépôt.
git add <file>Ajoute un fichier à l’index (staging).
git commit -m "message"Crée un commit.
git branchListe les branches.
git switch <branch>Change de branche.
git switch -c <new-branch>Crée et bascule sur une nouvelle branche.
git merge <branch>Fusionne une branche dans celle en cours.
git pullRécupère et fusionne les changements distants.
git pushEnvoie vos commits vers le dépôt distant.
git stashMet de côté temporairement vos modifications en cours sans les committer, pour travailler sur autre chose.
💡 Astuce : préférez git switch pour changer de branche et git restore pour restaurer des fichiers plutôt que git checkout. Utilisez git stash pour mettre temporairement de côté vos modifications en cours sans les valider, afin de pouvoir travailler sur autre chose puis les récupérer plus tard.

3. Conventional Commits

Les Conventional Commits définissent une syntaxe claire pour nommer vos commits.

<type>(scope?): <description> 
[body - optionnel]
[footer - optionnel]

Le scope peut être un composant/module (ex: auth, api, ui) ou un numéro de ticket selon votre contexte de travail (ex: JIRA-123, #42).

  • feat → ajout de fonctionnalité
  • fix → correction de bug
  • docs → documentation uniquement
  • style → modifications superficielles du code (indentation, espaces, formatage, renommage, etc.) sans impact sur la logique ou le comportement. Utilisez aussi style pour les changements de CSS ou de styles visuels (ex : mise à jour de classes, couleurs, responsive, etc.)
  • refactor → amélioration ou restructuration du code sans ajout de fonctionnalité ni correction de bug (ex : simplification d’un algorithme, découpage de fonctions, extraction de composants, etc.)
  • test → ajout ou modification de tests
  • chore → tâches diverses (maintenance, configuration, mise à jour de dépendances, scripts, etc.)
feat(auth): add Google OAuth login 
fix(api): correct pagination bug
docs(readme): add setup instructions
⚠️ Message en anglais : recommandé pour favoriser l’ouverture et la maintenance du projet.

4. git switch vs git checkout

git checkout servait à la fois à changer de branche et restaurer des fichiers.

  • git switch → naviguer ou créer des branches
  • git restore → restaurer des fichiers
git switch develop 
git switch -c feature/login-page
git restore src/app.js

5. Git Rebase

git rebase permet de réappliquer vos commits au-dessus d’une autre branche pour un historique linéaire.

  • merge → conserve tout l’historique
  • rebase → réécrit pour un historique linéaire
git switch feature/login-page 
git rebase develop

Ici, on place les commits de la branche feature/login-page au-dessus de develop pour obtenir un historique plus linéaire et propre.
Pensez à vérifier que votre branche cible (develop) est bien à jour avant de rebase pour éviter les régressions.
Avant de créer une merge request (MR), il est courant de rebaser votre branche de fonctionnalité sur develop pour résoudre d'éventuels conflits, pousser les modifications sur le repo distant et ainsi proposer une MR avec un historique propre et à jour.

⚠️ Attention : éviter sur une branche partagée sans accord de l’équipe.

6. Bonnes pratiques

  • Commits petits et significatifs
  • Messages en anglais + Conventional Commits
  • Préférer switch et restore
  • Utiliser rebase en local
  • pull avant de travailler
  • push régulièrement
  • Utiliser stash pour mettre de côté temporairement vos changements