Unfortunately I did several times git reset --hard HEAD^
losing a quite big chunk of code in several files. Is there a way to restore those commits or in this case to forward where the HEAD was before, so I can bring up those lines that I lost?
Asked
Active
Viewed 2,312 times
12
2 Answers
17
Use the reflog to recover the sha1 of the previous HEAD. In particular, the article reflog, your safety net will be particularly relevant to you. From that article:
The most common usage of this command is that you’ve just done a
git reset
and moved yourHEAD
back a few commits. But oops, you need that bit of code you left in the second commit. Crap. Now what?
Once you have found the sha1 of the commit you want to go back to, use something like:
git reset --hard 0a1b2c

Greg Hewgill
- 951,095
- 183
- 1,149
- 1,285
-
3You can also reset to `HEAD@{n}`, finding the appropriate n from the reflog – Michael Mrozek Jul 15 '10 at 22:57
-
One can also view the reflog with `git log -g`, which might provide a bit more context than `git reflog show`. – Chris Johnsen Jul 16 '10 at 04:04
-
1Cheers, you just saved my ass *big time*. – Humphrey Bogart Apr 03 '11 at 20:31
-
or reflog with date reference: `git reset --hard "HEAD@{1 million years ago}"` – J-16 SDiZ Dec 22 '11 at 03:21
0
Run git reset --hard HEAD@{1}
if you just committed your code and you want to undo that.
See Section called "Ordinal Spec" at http://book.git-scm.com/4_git_treeishes.html

Alexander Bird
- 38,679
- 42
- 124
- 159