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 :
- 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".
- Reformuler le message du commit "Add project codename" en "Add project codename: Chronos".
- 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 :
-
Le rebase interactif vous permet de manipuler les commits de votre historique. Le format de base de la commande est :
git rebase -i <commit>
où <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
-
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.
-
Pour combiner des commits, vous devrez utiliser soit squash, soit fixup sur le deuxième commit de la liste.
-
Pour changer un message de commit, utilisez l'action reword.
-
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.
-
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