Tous les guides
IntermédiaireÀ votre rythmeGuide gratuitSection 5/95

Git — Versionner son code

Pratiquez les fondations du développement : programmation, web, API, données et usages de l’IA. Des sections et exercices pour construire vos premiers projets.

💡

Contenu gratuit, accessible sans compte. Les outils et modèles évoluent : consultez le dossier actuel pour vérifier leurs versions. Modèles et sources

Section 11.1.5 : Git — Versionner son code

🎯 Objectif pédagogique

Comprendre le versionnement de code avec Git : initialiser un dépôt, sauvegarder des versions (commits), naviguer dans l'historique, et annuler des erreurs. Vous serez capable de protéger votre travail et de comprendre l'évolution de votre code dans le temps.


Le cauchemar de Marc sans Git

Avant de découvrir Git, Marc nommait ses fichiers ainsi :

rapport-final.xlsx
rapport-final-v2.xlsx
rapport-final-v2-CORRIGE.xlsx
rapport-final-v3-DEFINITIF.xlsx
rapport-final-v3-DEFINITIF-VRAIMENT.xlsx

Git résout ce problème élégamment : au lieu de copier des fichiers, vous photographiez l'état du projet à un instant T. Chaque photo (commit) est datée, commentée, et vous pouvez revenir à n'importe laquelle.

Les concepts fondamentaux

Loading diagram…
  1. →Working Directory : vos fichiers dans VS Code
  2. →Staging Area : fichiers préparés pour le prochain commit (git add)
  3. →Repository : historique complet de tous vos commits (local)
  4. →Remote : copie en ligne (GitHub) — sauvegarde + collaboration

Analogie de Marc : "Working = je rassemble les documents. Staging = je les mets dans la boîte. Commit = je scelle la boîte avec une étiquette. Push = j'envoie la boîte."

Installer Git

# Windows
winget install Git.Git

# macOS
brew install git

# Linux
sudo apt install git

# Vérification
git --version           # git version 2.44.x+

Configuration initiale (une seule fois) :

git config --global user.name "Marc Dupont"
git config --global user.email "marc.dupont@email.com"
git config --global init.defaultBranch main
git config --global core.editor "code --wait"

Le workflow Git quotidien

1. Initialiser un dépôt

mkdir mon-projet && cd mon-projet
git init
# → Initialized empty Git repository in .../mon-projet/.git/
git status
# → On branch main, No commits yet

2. Premier commit

echo "# Mon Projet" > README.md
git status              # Untracked files: README.md
git add README.md       # Ou : git add .
git status              # Changes to be committed: new file: README.md
git commit -m "feat: initial commit avec README"

3. Le cycle quotidien

# 1. Coder...
# 2. Voir ce qui a changé
git status                    # Fichiers modifiés
git diff                      # Détail des changements

# 3. Ajouter les changements
git add .                     # Tout ajouter

# 4. Committer
git commit -m "feat: ajout du formulaire de contact"

# 5. Voir l'historique
git log --oneline
# → a1b2c3d feat: ajout du formulaire de contact
# → 9e8f7d6 feat: initial commit avec README

Écrire de bons messages de commit

❌ Mauvais✅ Bon
fixfix: correction du calcul de TVA
updatefeat: ajout du mode sombre
wiprefactor: extraction du validateur
changesdocs: ajout des instructions d'installation

Convention Conventional Commits :

  • →feat: nouvelle fonctionnalité
  • →fix: correction de bug
  • →docs: documentation
  • →style: formatage
  • →refactor: restructuration
  • →test: ajout de tests
  • →chore: maintenance

Annuler des erreurs

# Annuler les modifications non committées
git checkout -- fichier.js

# Retirer du staging
git reset HEAD fichier.js

# Annuler le dernier commit (garde les fichiers)
git reset --soft HEAD~1

# Voir un ancien commit
git log --oneline
git show a1b2c3d

git reset --hard = destruction

git reset --hard supprime définitivement les modifications non committées. Utilisez-le uniquement si vous êtes sûr. Marc a perdu 2 heures de travail. Règle d'or : committez toutes les 30-60 minutes.

Le .gitignore

Certains fichiers ne doivent jamais être versionnés :

# .gitignore
node_modules/         # Dépendances npm (trop lourdes)
.env                  # Secrets (clés API, mots de passe !)
__pycache__/          # Cache Python
*.pyc                 # Fichiers compilés Python
.DS_Store             # Fichiers macOS
dist/                 # Build output

Jamais de secrets dans Git

Ne versionnez JAMAIS de clés API ou mots de passe. Si un .env est committé, le secret est compromis — des bots scannent GitHub en permanence. Marc a publié une clé OpenAI par erreur : 200$ de facture en 3 heures.

🏋️ Exercice pratique (20 minutes)

# 1. Créer et initialiser
mkdir git-practice && cd git-practice
git init

# 2. Premier commit
echo "# Exercice Git" > README.md
git add . && git commit -m "feat: initial commit"

# 3. Ajouter du contenu
echo "<h1>Hello Git</h1>" > index.html
echo "body \{ font-family: sans-serif; \}" > style.css
git add . && git commit -m "feat: ajout page HTML et CSS"

# 4. Modifier et observer
echo "<p>Je pratique Git !</p>" >> index.html
git diff
git add . && git commit -m "feat: ajout paragraphe"

# 5. Historique
git log --oneline

# 6. Créer .gitignore
echo "node_modules/" > .gitignore
echo ".env" >> .gitignore
git add . && git commit -m "chore: ajout .gitignore"

Marc : "Mon premier commit, c'est comme mon premier ordre de bourse. Sauf qu'ici, on peut annuler."

Vérification rapide

Quelle est la différence entre git add et git commit ?

Vérification rapide

Marc a committé son fichier .env avec des clés API. Que doit-il faire ?

Vérification rapide

Quelle convention est recommandée pour les messages de commit ?

Votre progression

Cette progression est déclarative et conservée dans votre navigateur. L’attestation finale ne constitue pas un diplôme ni une évaluation indépendante.

Voir ma progression et mon attestation

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Un cas pratique IA dans votre boîte mail

Méthodes, ressources et nouveaux exercices. Gratuit, avec désinscription à tout moment.