Skip to content

Latest commit

 

History

History
71 lines (51 loc) · 2.52 KB

010.q006.md

File metadata and controls

71 lines (51 loc) · 2.52 KB
createDate lastUpdateDate author keywords
2018-11-19
2019-03-08
marco46
Git, rebase

FAQ Git pour developpez.com

Réécriture de l'historique (rebase)

Comment effectuer un rebase intéractif ?

Il suffit d'ajouter le paramètre -i à la commande et d'y adjoindre la profondeur (combien de commits depuis la tête de la branche seront concernés).

Par exemple :

git rebase -i HEAD~3

Aura pour effet de rebase les trois derniers commits de votre branche.

L'exécution de cette commande entraine l'ouverture d'un éditeur de texte depuis votre shell, sous Windows avec Git BASH c'est VIM, sur macOS c'est VIM également et sur Ubuntu c'est nano.

L'éditeur de texte contient un fichier de configuration du rebase à effectuer, pour dire à chaque étape quelle opération vous souhaitez effectuer.

Par défaut on obtient pick pour chaque commit, par exemple :

pick d1fdf88 cypress - video recording on
pick b065479 travis and cypress - some fix in e2e tests + baseUrl conf + http-server devDeps + travis conf
pick 933cf95 migration from old webapp to jsonresume generated website

# Rebase 10f5b97..933cf95 onto 10f5b97 (3 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

Il suffit de changer la commande à effectuer, d'enregistrer ce fichier et de quitter l'éditeur et Git démarrera l'opération de rebase intéractif.

Si par exemple je veux changer les messages de commit des trois commits de ma branche je vais configurer ainsi :

reword d1fdf88 cypress - video recording on
reword b065479 travis and cypress - some fix in e2e tests + baseUrl conf + http-server devDeps + travis conf
reword 933cf95 migration from old webapp to jsonresume generated website

# Rebase 10f5b97..933cf95 onto 10f5b97 (3 command(s))

...

Ceci fait, à chaque étape du rebase Git me proposera de saisir un nouveau message de commit via l'éditeur de texte du shell par défaut.