Comment puis-je annuler mon dernier commit dans git ?
Est-ce que c'est
git reset --hard HEAD
ou
git reset --hard HEAD^
?
Si vous n'êtes pas totalement sûr de ce que vous entendez par "uncommit" et ne savez pas si vous voulez utiliser git reset
, veuillez consulter "Revenir à un commit Git précédent".
Si vous essayez de mieux comprendre git reset
, veuillez consulter "[Pouvez-vous expliquer ce que fait "git reset" en anglais simple ?][2]".
Si vous savez que vous voulez utiliser git reset
, cela dépend toujours de ce que vous entendez par "uncommit". Si tout ce que vous voulez faire est d'annuler l'acte de commiter, en laissant tout le reste intact, utilisez :
git reset --soft HEAD^
Si vous voulez annuler l'acte de commiter et tout ce que vous avez mis en scène, mais laisser l'arbre de travail (vos fichiers intacts) :
git reset HEAD^
Et si vous voulez vraiment le défaire complètement, en jetant toutes les modifications non validées, en réinitialisant tout à la validation précédente (comme le demandait la question originale) :
git reset --hard HEAD^
La question originale demandait aussi que ce soit HEAD^
et non HEAD
. HEAD
fait référence au commit en cours - généralement, l'extrémité de la branche actuellement extraite. Le ^
est une notation qui peut être attachée à n'importe quel spécificateur de commit, et signifie "le commit avant". Ainsi, HEAD^
est le commit avant le commit courant, tout comme master^
est le commit avant le bout de la branche master.
Voici la partie de la [documentation git-rev-parse][3] décrivant toutes les façons de spécifier les commits (^
n'est qu'un élément de base parmi d'autres).
[2] : https://stackoverflow.com/questions/2530060/can-you-explain-what-git-reset-does-in-plain-english [3] : http://linux.die.net/man/1/git-rev-parse
Attention, reset --hard
supprimera aussi vos modifications locales (non-committed).
git reset --hard HEAD^
note : si vous êtes sous windows, vous devrez citer le HEAD^ ainsi
git reset --hard "HEAD^"