Comment utiliser la commande git rebase -i

La commande git rebase -i est une fonctionnalité avancée de Git, qui permet aux développeurs de réécrire l’historique des commits de manière interactive. Cette commande est extrêmement utile pour créer un historique propre et compréhensible, ce qui est essentiel pour maintenir des projets complexes. Voici une plongée en détail sur comment utiliser efficacement git rebase -i.

Qu’est-ce que git rebase -i ?

git rebase -i permet de réorganiser, modifier, fusionner ou supprimer des commits de manière interactive. Le -i signifie “interactive”, offrant à l’utilisateur un contrôle total sur la façon dont l’historique des commits doit être modifié.

Quand utiliser git rebase -i ?

Cette commande est particulièrement utile dans les cas suivants :

  • Nettoyer l’historique de votre branche avant de la fusionner avec la branche principale.
  • Modifier des commits précédents pour corriger des erreurs, changer des messages de commit, ou combiner plusieurs commits en un seul.
  • Réordonner les commits pour améliorer la lisibilité et la cohérence de l’historique.

Comment utiliser git rebase -i ?

Voici les étapes pour utiliser la commande :

  1. Déterminer la portée du rebase : Avant de lancer un rebase interactif, identifiez jusqu’où remonter dans l’historique des commits. Cela peut être fait en utilisant git log pour visualiser l’historique.
  2. Lancer le rebase interactif : Utilisez la commande git rebase -i HEAD~N, où N est le nombre de commits à partir du HEAD actuel que vous souhaitez examiner. Par exemple, si vous voulez revoir les 3 derniers commits, vous utiliserez git rebase -i HEAD~3.
  3. Choisir les actions pour chaque commit : Git ouvrira votre éditeur de texte configuré avec une liste des commits sélectionnés et des actions possibles à leur appliquer. Les actions incluent :
    • pick : garder le commit tel quel.
    • reword : changer le message du commit.
    • edit : modifier le contenu du commit.
    • squash : fusionner ce commit avec le précédent.
    • fixup : similaire à squash, mais supprime le message de commit de ce commit.
    • drop : supprimer le commit.
  4. Sauvegarder et quitter l’éditeur : Une fois les modifications apportées, sauvegardez les changements et quittez l’éditeur. Git commencera à appliquer les actions choisies. Si vous avez choisi de reword ou d’edit, Git vous permettra de modifier les messages de commit ou le contenu des commits, respectivement.
  5. Résoudre les conflits si nécessaire : Si Git rencontre des conflits pendant le rebase, il s’arrêtera et vous demandera de les résoudre. Après avoir résolu les conflits dans un fichier, utilisez git add <fichier> pour marquer le conflit comme résolu. Une fois tous les conflits résolus, continuez le rebase avec git rebase --continue.
  6. Terminer le rebase : Une fois le processus terminé, votre branche aura un nouvel historique de commits selon les modifications que vous avez apportées.

Exemple

Supposons que nous ayons créée par erreur le commit dfe4abf et souhaitons intégrer les modifications de ce commit au commit précédent.
Nous allons donc lancer la commande git rebase -i et changer le mot clé pick par défaut en squash comme indiqué sur les images ci-dessous.

Bonnes pratiques

  • Sauvegardez votre branche avant de rebaser : Le rebase peut modifier l’historique de manière significative. Il est donc conseillé de créer une copie de sauvegarde de votre branche avant de commencer.
  • Utilisez le rebase interactif principalement sur des branches locales : Rebaser des branches qui ont déjà été publiées peut causer des problèmes pour d’autres personnes travaillant sur le projet.
  • Communiquez avec votre équipe : Si vous devez rebaser une branche partagée, assurez-vous que tous les membres de l’équipe sont informés et d’accord avec ce changement.

La maîtrise de git rebase -i est un atout précieux pour tout développeur, permettant une gestion efficace et une amélioration de l’historique des commits de leurs projets.