Vous n'avez pas besoin de revenir en arrière. Vous pouvez utiliser git rebase
en mode interactif pour modifier votre historique. Par exemple, sur la branche de mon sujet actuel, si j'exécute git rebase -i master
J'obtiens cette vue dans VIM :
pick 23299aa6 improve unit test messages
pick cf1c3c0c move sagas tests to where they'll get run
pick f7ff7fa7 use docker-compose up to rebuild the ui image more quickly
pick 544902ec split definitions file into helpers and given, when, then files
pick 55e94e7b remove canary test
pick 8a4b0862 move expectTitleToBe function to helper file
# Rebase 72b74f26..8a4b0862 onto 72b74f26 (6 commands)
#
# 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
À partir de cette vue, je peux supprimer les lignes que je ne veux pas valider, si je ne veux pas supprimer le test canari, je peux supprimer ou commenter cette ligne ou utiliser la commande tomber commande. Je peux arrêter le rebasement à un commit et changer ce qui sera committé avec modifier (vous pourriez commettre partiellement ici en supprimant les modifications) et ainsi de suite pour les autres commandes listées :
edit 23299aa6 improve unit test messages
pick cf1c3c0c move sagas tests to where they'll get run
pick f7ff7fa7 use docker-compose up to rebuild the ui image more quickly
pick 544902ec split definitions file into helpers and given, when, then files
drop 55e94e7b remove canary test
pick 8a4b0862 move expectTitleToBe function to helper file
# Rebase 72b74f26..8a4b0862 onto 72b74f26 (6 commands)
#
# 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
Pour votre situation et le rebasage contre vous-même et non contre une autre branche, vous pouvez regarder en arrière dans l'onglet git log
pour trouver le hash du commit sur lequel vous voulez revenir. Il s'agit généralement d'un seul commit avant le travail que vous avez commencé : git rebase -i <where to "revert">
.