Réécriture de l'historique

GitGitBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Bienvenue, voyageur temporel de Git ! Vous avez été chargé d'une mission importante : nettoyer l'historique de commits désordonné d'un projet top-secret. Votre objectif est d'utiliser vos pouvoirs Git nouvellement acquis, et plus particulièrement l'art du rebasage interactif (interactive rebasing), pour transformer une chronologie chaotique 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 faire avec la fonctionnalité de rebasage interactif de Git. Vous combinerez les commits liés, supprimerez ceux qui sont inutiles et réécrirez les messages de commit pour raconter une histoire plus claire du développement de votre projet.

Êtes-vous prêt à plonger dans le flux temporel et à en ressortir avec un historique Git soigné ? Commençons votre aventure temporelle !


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/log("Show Commits") git/BranchManagementGroup -.-> git/rebase("Reapply Commits") subgraph Lab Skills git/commit -.-> lab-387746{{"Réécriture de l'historique"}} git/log -.-> lab-387746{{"Réécriture de l'historique"}} git/rebase -.-> lab-387746{{"Réécriture de l'historique"}} end

Nettoyage de la chronologie

Tâches

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

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

Vous devriez voir les 4 commits suivants (vos hachages 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. Combiner 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 commit "Add project codename" en "Add project codename: Chronos".
  3. Conserver le commit le plus récent ("Add project description") tel quel.

Exigences

Pour mener à bien cette mission, respectez les exigences suivantes :

  • Toutes les opérations doivent être effectuées dans le répertoire ~/project/time-travel-git.
  • Vous devez utiliser la commande git rebase -i (rebasage interactif) pour nettoyer l'historique des commits.
  • Votre historique final doit comporter exactement 3 commits (au lieu des 4 d'origine).
  • Le contenu du fichier doit rester inchangé - vous ne modifiez que 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 astuces utiles pour vous guider tout au long du défi :

  1. Le rebasage interactif vous permet de manipuler les commits dans votre historique. Le format de commande de base 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 de rebasage interactif, vous verrez une liste de commits avec 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 - combiner ce commit avec le précédent
    • fixup ou f - comme squash, mais ignorer le message de ce commit
  3. Pour combiner des commits, vous pouvez utiliser squash ou fixup sur le deuxième commit.

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

  5. Après avoir configuré votre plan de rebasage, enregistrez et fermez l'éditeur. Git vous guidera tout au long du reste du processus, en ouvrant de nouvelles fenêtres d'éditeur si nécessaire pour modifier les messages de commit.

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

    git rebase --abort

    et recommencer.

Exemple

Après avoir terminé le défi, votre git log --oneline devrait ressembler à ceci (avec des hachages 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'histoire de Git. Vous avez maîtrisé l'art du rebasage interactif (interactive rebasing), un outil puissant qui vous permet de remodeler le passé et de créer un historique de commits plus propre et plus logique.

En combinant 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 du monde réel, où le maintien d'un historique propre et compréhensible peut grandement améliorer la collaboration et la gestion de projet.

N'oubliez pas qu'un grand pouvoir implique de grandes responsabilités. Bien que la réécriture de l'historique puisse être 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 l'historique partagé.

Alors que vous poursuivez vos aventures Git, continuez à perfectionner ces compétences. La capacité de manipuler l'historique ne consiste pas seulement à faire du rangement, il s'agit de créer un récit clair de l'évolution de votre projet. Que vos futurs historiques Git soient propres, vos merges sans conflit et vos commits toujours significatifs !