Versioning avec Git & GitHub · Étape 04

Crée des commits atomiques et lisibles

Transforme un index contrôlé en historique exploitable avec une intention unique, un message précis et une vérification avant/après.

Durée indicative · ~1 h 25Niveau débutantPrérequis conseillé · Leçon 3 — status, diff et indexPratique · TP
L’idée reçue

« Plus un commit contient de changements, plus il représente de travail. »

Un commit utile représente une intention cohérente. Il doit pouvoir être lu, testé, revu et éventuellement annulé sans emporter des modifications sans rapport.

01Définis l’intention

Mauvais lot : documentation + correction réseau + secret local + formatage
Bon commit : documenter le workflow du laboratoire
Bon commit : ajouter le script d’inspection du repository

Un commit atomique n’est pas forcément petit en nombre de lignes. Il est indivisible sur le plan logique.

02Vérifie avant commit

cd /tmp/soria-git-foundations-$USER/starter
git add README.md
git status --short
git diff --cached --check
git diff --cached

git diff –cached –check repère notamment certaines erreurs d’espaces. La revue du diff reste indispensable pour détecter un fichier ou une intention étrangère.

03Crée le commit

git commit -m "docs: explain the repository workflow"
git status --short --branch
git log -1 --format=fuller

Le préfixe docs: est une convention de lisibilité, pas une obligation de Git. Le sujet décrit l’intention au présent et reste compréhensible hors contexte.

04Crée un second commit distinct

git add docs/observations.md
git diff --cached
git commit -m "docs: record the three Git areas"

Les deux commits peuvent maintenant être revus ou annulés séparément.

05Observe l’identifiant du commit

git rev-parse HEAD
git rev-parse --short HEAD
git show --no-patch --format='%H%n%an <%ae>%n%s' HEAD

Le hash identifie le contenu du commit et ses liens dans l’historique. Le hash court est pratique pour l’affichage, mais sa longueur doit rester suffisante pour être unique dans le dépôt.

06Corrige uniquement le dernier message

git commit --amend -m "docs: describe the three Git areas"
git log --oneline -3

–amend crée un nouveau commit qui remplace le dernier dans la branche courante. Évite cette réécriture après partage sans coordination avec l’équipe.

07Compare avant et après amend

git reflog -3
git show --stat HEAD
git status --porcelain

Le reflog local conserve temporairement les déplacements de références et permet d’observer l’ancien HEAD. Il ne remplace pas une stratégie de collaboration.

Challenge autonome

Découpe une modification mélangée

Ajoute documentation, script et changement de configuration dans le même working tree. Produis ensuite trois commits atomiques avec preuve du diff préparé avant chacun.

Ce que tu retiens

Un commit est un snapshot documenté par une intention. Sa qualité dépend de la sélection de l’index, du message, de la vérification et de sa capacité à être compris isolément.

Ta progression

Chargement de l’état… Se connecter pour synchroniser.