Leçon 7 / 15

Lire l’historique avant de le modifier

8 min Git — branches, revue et historique Gratuit

Objectif : Reconstituer l’ordre et les liens entre les commits de la branche de fonctionnalité et de la branche principale avant de modifier l’historique.

Votre branche de fonctionnalité a avancé pendant la revue, et la branche principale peut elle aussi avoir reçu des commits. Avant de réorganiser l’historique, vous devez savoir d’où viennent les changements et comment les branches se sont séparées. Une lecture attentive du graphe vous évite de modifier les mauvais commits.

Vous avez déjà vérifié l’état local du dépôt et la branche courante dans la leçon « Lire l’état du dépôt et repérer les branches ». Ici, vous examinez les commits eux-mêmes : leur ordre, leur message et les liens entre les lignes de développement. Les commandes présentées ne modifient ni les fichiers ni l’historique.

Afficher les commits sous forme de graphe

La commande git log --graph représente les liens entre les commits avec des traits et des embranchements. Ajoutez --oneline pour obtenir une ligne courte par commit et --decorate pour afficher les noms de branches ou les références associées. En indiquant les deux branches, vous limitez l’affichage à leur historique commun et à leurs éventuelles différences.

Terminal
git log --graph --oneline --decorate feature/nouveaux-guides main
Résultat attendu
* 8f3c2a1 (HEAD -> feature/nouveaux-guides, origin/feature/nouveaux-guides) docs: précise la boucle du lac
* 51a9d70 feat: ajoute la section nouveaux guides
* 2b6e410 (main, origin/main) chore: prépare la page Sentiers

Dans cet exemple, les lignes sont affichées du commit le plus récent vers le plus ancien. Les deux lignes marquées pour `feature/nouveaux-guides` indiquent les commits de la fonctionnalité : l’ajout de la section, puis la correction demandée pendant la revue. La branche `main` pointe encore sur le commit de départ montré ici ; les deux branches partagent donc ce point d’origine.

Reconnaître la séparation des branches

Un commit est relié à ses parents ; le graphe rend visibles ces relations, pas seulement une liste de messages. Lorsque deux branches ont des commits différents après un même point, ce dernier commit partagé est leur ancêtre commun. Il permet de distinguer le travail propre à la fonctionnalité des changements apparus ensuite sur la branche principale.

Pour comparer les branches en incluant les références distantes, vous pouvez afficher toutes les références du dépôt. Cette vue est utile si vous voulez vérifier si la branche principale a avancé sur le dépôt partagé alors que votre copie locale n’en montre pas encore les commits. Vous lirez alors les étiquettes de branche au bout des lignes et les embranchements entre les commits.

Terminal
git log --graph --oneline --decorate --all
Résultat attendu
* 8f3c2a1 (HEAD -> feature/nouveaux-guides, origin/feature/nouveaux-guides) docs: précise la boucle du lac
* 51a9d70 feat: ajoute la section nouveaux guides
| * 7c4d2e8 (origin/main) docs: ajuste les informations d’accueil
|/
* 2b6e410 (main) chore: prépare la page Sentiers

Cette seconde sortie montre une situation différente : `origin/main` a reçu un commit après le point partagé, tandis que `main` pointe encore sur celui-ci. La branche de fonctionnalité possède ses propres commits et n’inclut pas encore le nouveau commit de la branche principale. C’est précisément le type de divergence à repérer avant une opération destinée à remettre la branche à jour.

Déduire ce que le graphe vous apprend

Avant de poursuivre, formulez trois observations : quels commits appartiennent seulement à la branche de fonctionnalité, quels commits sont visibles seulement sur la branche principale, et quel est leur dernier ancêtre commun. Si les deux noms de branche désignent le même commit, elles n’ont pas divergé dans les références que vous observez. Si leurs lignes s’écartent après un commit partagé, vous savez qu’il existe des changements distincts à prendre en compte.

Le graphe ne vous dit pas si deux modifications de fichiers sont compatibles, ni quelle intention doit être conservée en cas de recouvrement. Il vous donne une carte des commits pour préparer cette analyse. Dans la prochaine leçon, vous utiliserez le graphe pour mettre la branche de fonctionnalité à jour par rapport à la principale.

À retenir

  • Affichez les relations entre les commits avec `git log --graph --oneline --decorate`.
  • Ajoutez `--all` pour observer aussi les autres références présentes localement.
  • Suivez les étiquettes de branche pour voir quels commits sont propres à chaque ligne de développement.
  • Le dernier commit partagé par deux branches est leur ancêtre commun.
  • Lisez le graphe avant toute opération qui modifierait l’historique.

Envie d'aller plus loin ?

Les cours Enovatic sont gratuits et le resteront. Si vous cherchez un accompagnement encadré, nos formations professionnelles sont animées par les mêmes formateurs.