How can I uncommit my last commit in git?
Is it
git reset --hard HEAD
or
git reset --hard HEAD^
?
How can I uncommit my last commit in git?
Is it
git reset --hard HEAD
or
git reset --hard HEAD^
?
If you aren't totally sure what you mean by "uncommit" and don't know if you want to use git reset
, please see "Revert to a previous Git commit".
If you're trying to understand git reset
better, please see "Can you explain what "git reset" does in plain English?".
If you know you want to use git reset
, it still depends what you mean by "uncommit". If all you want to do is undo the act of committing, leaving everything else intact, use:
git reset --soft HEAD^
If you want to undo the act of committing and everything you'd staged, but leave the work tree (your files) intact:
git reset HEAD^
And if you actually want to completely undo it, throwing away all uncommitted changes, resetting everything to the previous commit (as the original question asked):
git reset --hard HEAD^
The original question also asked it's HEAD^
not HEAD
. HEAD
refers to the current commit - generally, the tip of the currently checked-out branch. The ^
is a notation which can be attached to any commit specifier, and means "the commit before". So, HEAD^
is the commit before the current one, just as master^
is the commit before the tip of the master branch.
Here's the portion of the git-rev-parse documentation describing all of the ways to specify commits (^
is just a basic one among many).
get reset --soft HEAD^
is what i was looking for!!! SO sweet, what is the term for putting changes into the current working head? or directory. –
Riviera git reset HEAD^
gives me zsh: no matches found: HEAD^
, but git reset HEAD~1
works –
Fissionable git reset 'HEAD^'
–
Leptophyllous git reset --soft HEAD^
that the changes remain staged? I think that beginners might get confused between the soft
and the default (mixed
) option. I would edit it myself, but I am not 100% sure this is the case. –
Gertrudgertruda git status
is typed which is use "git reset HEAD <file>..." to unstage
. The message is correct, but since changes are not yet commited, then HEAD
should be used instead of HEAD^
. Maybe, you would like to clarify that, otherwise somebody could conclude that resetting to the HEAD is always pointless. –
Gertrudgertruda git reset --hard HEAD^
, it asks More?
, then I type y
, and it says fatal: ambiguous argument 'HEADy': unknown revision or path not in the working tree.
–
Standford git reset --hard "HEAD^"
works too for Windows –
Endres git reset --soft HEAD^
Will keep the modified changes in your working tree.
git reset --hard HEAD^
WILL THROW AWAY THE CHANGES YOU MADE !!!
To keep the changes from the commit you want to undo
git reset --soft HEAD^
To destroy the changes from the commit you want to undo
git reset --hard HEAD^
You can also say
git reset --soft HEAD~2
to go back 2 commits.
Edit: As charsi mentioned, if you are on Windows you will need to put HEAD or commit hash in quotes.
git reset --soft "HEAD^"
git reset --soft "asdf"
git reset --soft HEAD^ More? More? fatal: ambiguous argument 'HEAD ': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]'
What the heck? Why does nothing ever just work in git
? I hate it. –
Daugavpils git reset --soft "HEAD^"
–
Pitre If you want to revert the commit WITHOUT throwing away work, use the --soft flag instead of --hard
git reset --soft HEAD^
Be careful ! reset --hard
will remove your local (uncommitted) modifications, too.
git reset --hard HEAD^
note: if you're on windows you'll need to quote the HEAD^ so
git reset --hard "HEAD^"
soft
version that will retain your work locally. –
Bree git reset --hard HEAD@{1}
to go back to where you just were. (HEAD@{1}
means roughly "the commit I was just at 1 change ago", in this case the commit that you told Git you wanted to get rid of. Type git reflog
to see all the recent changes.) –
Takishatakken git reset --hard HEAD~1
–
Crayfish git reset --soft HEAD\^
if using zsh
–
Vorlage Just a note - if you're using ZSH and see the error
zsh: no matches found: HEAD^
You need to escape the ^
git reset --soft HEAD\^
If you commit to the wrong branch
While on the wrong branch:
git log -2
gives you hashes of 2 last commits, let's say $prev
and $last
git checkout $prev
checkout correct commitgit checkout -b new-feature-branch
creates a new branch for the featuregit cherry-pick $last
patches a branch with your changesThen you can follow one of the methods suggested above to remove your commit from the first branch.
If you haven't pushed your changes yet use git reset --soft [Hash for one commit]
to rollback to a specific commit. --soft
tells git to keep the changes being rolled back (i.e., mark the files as modified). --hard
tells git to delete the changes being rolled back.
Be careful with that.
But you can use the rebase command
git rebase -i HEAD~2
A vi
will open and all you have to do is delete the line with the commit. Also can read instructions that were shown in proper edition @ vi
. A couple of things can be performed on this mode.
© 2022 - 2024 — McMap. All rights reserved.
git help reset
) – Scram