Réécrire l'histoire

GitBeginner
Pratiquer maintenant

Introduction

Bienvenue, explorateur temporel de Git ! Une mission de la plus haute importance vous a été confiée : nettoyer l'historique de commits chaotique d'un projet top-secret. Votre objectif est d'utiliser vos nouveaux pouvoirs Git, et plus particulièrement l'art du rebase interactif, pour transformer une chronologie confuse en un historique clair et concis.

Imaginez que vous êtes un historien capable de réécrire le passé. Votre travail consiste à prendre une série d'événements dispersés et à les réorganiser en un récit cohérent. C'est exactement ce que vous allez accomplir avec la fonctionnalité de rebase interactif de Git. Vous allez fusionner des commits liés, supprimer ceux qui sont inutiles et reformuler les messages pour mieux raconter l'évolution de votre projet.

Êtes-vous prêt à plonger dans le flux temporel pour en ressortir avec un historique Git parfaitement poli ? Que l'aventure temporelle commence !

Nettoyage de la chronologie

Tâches

Le dépôt du défi a été configuré dans ~/project/time-travel-git. Exécutez la commande suivante pour visualiser l'historique initial des commits :

cd ~/project/time-travel-git
git log --oneline

Vous devriez voir les 4 commits suivants (vos identifiants de commit seront différents) :

886c6ad (HEAD -> master) Add project description
3a87b84 Add project codename
6b4cbb9 Fix typo in project name
0d71e5e Start secret project

Votre mission comprend les tâches suivantes :

  1. Fusionner les deux commits les plus anciens ("Start secret project" et "Fix typo in project name") en un seul commit avec le message "Initialize secret project".
  2. Reformuler le message du commit "Add project codename" en "Add project codename: Chronos".
  3. Conserver le commit le plus récent ("Add project description") tel quel.

Exigences

Pour réussir cette mission, respectez les consignes suivantes :

  • Toutes les opérations doivent être effectuées dans le répertoire ~/project/time-travel-git.
  • Vous devez impérativement utiliser la commande git rebase -i (rebase interactif) pour nettoyer l'historique.
  • Votre historique final doit comporter exactement 3 commits (au lieu des 4 originaux).
  • Le contenu des fichiers ne doit pas changer — vous modifiez uniquement l'historique des commits.
  • Une fois le défi terminé, l'exécution de git log --oneline doit afficher 3 commits avec les messages corrects.

Astuces

Voici quelques conseils pour vous guider dans ce défi :

  1. Le rebase interactif vous permet de manipuler les commits de votre historique. Le format de base de la commande est :

    git rebase -i <commit>

    <commit> est le commit précédant le premier que vous souhaitez modifier. Pour modifier à partir du tout premier commit, vous pouvez utiliser :

    git rebase -i --root
  2. Dans l'écran du rebase interactif, vous verrez une liste de commits associée à des actions. Les actions courantes sont :

    • pick : utiliser le commit tel quel.
    • reword (ou r) : utiliser le commit mais modifier son message.
    • squash (ou s) : fusionner ce commit avec le précédent.
    • fixup (ou f) : comme squash, mais en ignorant le message de ce commit.
  3. Pour combiner des commits, vous devrez utiliser soit squash, soit fixup sur le deuxième commit de la liste.

  4. Pour changer un message de commit, utilisez l'action reword.

  5. Après avoir configuré votre plan de rebase, enregistrez et fermez l'éditeur. Git vous guidera pour la suite, en ouvrant de nouvelles fenêtres d'édition si nécessaire pour modifier les messages.

  6. Si vous commettez une erreur pendant le rebase, vous pouvez toujours l'annuler avec :

    git rebase --abort

    et recommencer à zéro.

Exemple

Une fois le défi relevé, votre git log --oneline devrait ressembler à ceci (avec des identifiants de commit différents) :

abc1234 Add project description
def5678 Add project codename: Chronos
ghi9101 Initialize secret project
✨ Vérifier la solution et pratiquer

Résumé

Dans ce défi, vous avez entrepris un voyage temporel à travers l'historique de Git. Vous avez maîtrisé l'art du rebase interactif, un outil puissant qui vous permet de remodeler le passé pour créer un historique de commits plus propre et plus logique.

En fusionnant des commits, en reformulant des messages et en réorganisant les modifications, vous avez transformé une séquence d'événements désordonnée en un récit cohérent. Cette compétence est inestimable dans les projets réels, où le maintien d'un historique clair et compréhensible facilite grandement la collaboration et la gestion de projet.

N'oubliez pas qu'un grand pouvoir implique de grandes responsabilités. Si la réécriture de l'historique est utile pour les branches locales ou les projets personnels, elle doit être utilisée avec prudence sur les branches partagées. Communiquez toujours avec votre équipe avant de modifier un historique déjà publié.

Continuez à perfectionner ces compétences au fil de vos aventures Git. La capacité à manipuler l'historique ne sert pas seulement à faire du rangement — il s'agit de construire le récit précis de l'évolution de votre projet. Que vos futurs historiques Git soient limpides, vos fusions sans conflit et vos commits toujours porteurs de sens !