Réécrire l'historique
Commit --amend - Modifier le dernier commit
La commande git commit --amend
permet de modifier le dernier commit.
En vidéo :
- (optionnel) Vous pouvez ajouter des modifications au commit précédent en les ajoutant à l'index (
git add .
ougit add nomDuFichier
) git commit --amend
vous ouvre l'éditeur de texte pour modifier le message du dernier commit (le fermer pour valider)- Votre dernier commit a été modifié (et n'a plus le même identifiant)
⚠️ Si vous aviez déjà envoyé le commit sur le dépôt distant, il faudra utiliser l'option --force
lors du push
. Veillez donc à ne pas perdre des commits sur le distant !
Rebase - Modifier tout l'historique
La commande git rebase
permet de modifier l'historique de la branche en cours. Non seulement d'en changer la "base" (son commit de départ), mais aussi de réécrire les commits eux-mêmes.
En vidéo :
L'utilisation la plus complète est git rebase -i main
(remplacer main
par une autre branche si besoin), qui vous ouvre un éditeur pour définir ce que vous souhaitez faire pour chaque commit présent entre la tête de lecture et le dernier commit de la branche main
.
Vous pouvez, entre autre :
- utiliser le commit en utilisant
p
oupick
sur la ligne de votre commit (il sera utilisé sans modification) - supprimer le commit en utilisant
d
oudrop
sur la ligne de votre commit (il sera supprimé, ainsi que les modifications qu'il contient). Notez que c'est équivalent à supprimer la ligne du commit - modifier le message de commit en utilisant
r
oureword
sur la ligne de votre commit (vous ouvrira un éditeur de texte pour modifier le message) - fusionner un commit avec le précédent en utilisant
s
ousquash
sur la ligne de votre commit (un seul des deux commits sera conservé, mais toutes les modifications seront conservées)
Une fois que vous avez choisi quoi faire de chaque commit, les commandes indiquées et les commits seront appliqués l'un après l'autre.
⚠️ Si vous aviez déjà envoyé les commits sur le dépôt distant, il faudra utiliser l'option --force
lors du push
. Veillez donc à ne pas perdre des commits sur le distant !