Mon guide pour comprendre Git rebase -i

Git est un système de contrôle de version distribué gratuit et open source conçu pour tout gérer, des petits aux très grands projets, avec rapidité et efficacité. C’est un outil essentiel dans la boîte à outils d’un développeur open source.
Cet article explique pourquoi et comment utiliser le git rebase --interactive
(-i
pour faire court) commande. Ceci est considéré comme une commande Git intermédiaire, mais cela peut être très utile une fois que vous commencez à travailler avec de grandes équipes.
Cette commande est l’une des plus puissantes de Git. le git rebase
La commande vous aide à gérer plusieurs commits, notamment :
- Aplatir (ou écraser dans la terminologie Git) plusieurs commits pour qu’ils aient l’air d’avoir tous été faits en même temps
- Supprimer l’un des commits
- Diviser un commit en deux
- Réorganiser les commits
Oui le git rebase
La commande peut réécrire l’historique des commits de votre référentiel en réorganisant, modifiant et même en supprimant les commits. Alors, commençons!
Instructions utiles dans le message de rebase
le git rebase -i
l’interface est, comme sa forme longue --interactive
flag implique, une interface interactive. Il fournit une liste de commits, puis vous choisissez les actions que vous souhaitez que Git entreprenne sur chacun d’eux. Ne rien faire est un choix valable, mais au moins un commit doit être marqué comme celui à écraser, sinon le rebase n’a pas de sens sur le plan fonctionnel.
- p, pick — Choisissez ce commit à conserver.
- e, edit — Modifiez ce commit pour modifier le message de commit.
- r, reformuler — Utilisez ce commit, mais éditez-le également.
- s, squash — Écrase ce commit dans un commit précédent. Lors de l’exécution d’un
git rebase -i
vous devez avoir au moins un commit marqué comme squash. - d, drop — Supprimer ce commit.
Écraser les commits
Supposons que vous ayez deux commits et que vous vouliez les écraser en un seul. Ceci est réalisé en utilisant git rebase -i HEAD~2
(c’est à deux commits de votre position actuelle) et en mettant le mot écraser avant le commit.
$ git rebase --interactive HEAD~2
L’exécution de cette commande vous donne une liste de commits dans votre éditeur de texte qui ressemble à ceci :
pick 718710d Commit1.
pick d66e267 Commit2.
Si vous souhaitez créer un seul commit à partir de deux commits, vous devez modifier le script pour qu’il ressemble à ceci :
pick 718710d Commit1.
squash d66e267 Commit2.
Enfin, enregistrez et quittez l’éditeur. Après cela, Git applique toutes les modifications et ouvre un éditeur pour fusionner les deux commits :
# This is a combination of 2 commits.
# This is the 1st commit message:Fuse smoke test versioning.
# This is the commit message #2:
Updated the code.
# Please enter the commit message for your changes.
L’enregistrement de ceci résulte en un seul commit qui introduit les modifications des deux commits précédents.
Réorganiser les commits
Supposons que vous ayez trois commits et que vous souhaitiez modifier leur ordre de sorte que Commit3 soit le premier, Commit2 le deuxième, puis le troisième Commit1. Cours git rebase -i HEAD~3
pour que cela se produise :
$ git rebase --interactive HEAD~3
Ce script est ouvert dans votre éditeur :
pick 8cfd1c4 Commit1
pick 718710d Commit2
pick d77e267 Commit3
Modifiez le script comme ceci :
pick d77e267 Commit3
pick 718710d Commit2
pick 8cfd1c4 Commit1
Lorsque vous enregistrez et quittez l’éditeur, Git rembobine votre branche vers le parent de ces commits et applique d77e267ensuite 718710det alors 8cfd1c4 car les numéros de commit ne correspondent pas.
Supprimer un commit
Supposons que vous ayez deux commits et que vous vouliez vous débarrasser du second. Vous pouvez le supprimer à l’aide du git rebase -i
scénario.
$ git rebase -i HEAD~2
Ce script est ouvert dans votre éditeur :
pick 8cfd1c4 Commit1
pick 718710d Commit2
Placez le mot laissez tomber avant le commit que vous souhaitez supprimer, ou vous pouvez simplement supprimer cette ligne du script de rebase.
pick 8cfd1c4 Commit1
drop 718710d Commit2
Puis enregistrez et quittez l’éditeur. Git applique les modifications et les suppressions qui s’engagent.
Cela peut provoquer des conflits de fusion si vous avez de nombreux commits plus tard dans la séquence qui dépendent de celui que vous venez de supprimer, alors utilisez-le avec précaution. Mais vous avez la possibilité d’annuler les modifications.
Rebase avec prudence
Si vous êtes à mi-chemin d’un rebase et décidez que ce n’est pas une bonne idée, utilisez le git rebase --abort
commande pour annuler toutes les modifications que vous avez apportées. Si vous avez terminé un rebase et décidez que c’est faux ou pas ce que vous voulez, vous pouvez utiliser git reflog
pour récupérer une version antérieure de votre branche.
Le rebasage est puissant et peut être utile pour garder votre dépôt organisé et votre historique propre. Certains développeurs aiment rebaser la branche principale afin que les commits racontent clairement l’histoire du développement, tandis que d’autres préfèrent que tous les commits soient conservés exactement tels qu’ils ont été proposés pour fusionner à partir d’autres branches. Tant que vous réfléchissez à ce dont votre référentiel a besoin et à la manière dont un rebase pourrait l’affecter, le git rebase
commande et le git rebase -i
interface sont des commandes utiles.