如何在git hard reset后恢复最后一次提交?

时间:2013-11-11 03:55:17

标签: git

硬重置后我可以恢复以下提交吗?

步骤:

1) $ (master) // ....made a bunch of changes to files thinking I was working on a branch
2) $ git checkout -b 001-branch  // copy changes to a branch to work with
3) $ (001-branch) // make some more changes to files
4) $ (001-branch) git commit -a -m 'added and changed stuff'
// at this point I was just going to pull force master to latest then rebase my 001-branch off of original master (not the stuff I had modified)
5) $ (001-branch) git checkout master
6) $ (master) git reset --hard HEAD
7) $ (master) git pull
8) $ (master) git checkout 001-branch // go back to my branch and rebase my changes
9) $ (001-branch) // oops...my changes were all kiboshed and I don't see the commit I did per git lg

任何摆脱这种混乱的方法来恢复我的变化?

4 个答案:

答案 0 :(得分:15)

要查看对001分支所做的所有更改,您可以执行git reflog 001-branch,但是,您认为自己在001分支中所做的可能是你做了另一个分支,所以你可能需要研究git reflog的所有更改。

答案 1 :(得分:13)

git reflog show是否打印缺少提交的哈希值?如果是,则git checkout -b recovery-branch commitId将创建指向缺少提交的新分支。然后,您可以根据需要进行合并。

答案 2 :(得分:5)

每当git做一些像更改或倒带分支一样激烈的事情时,它会在reflog中记录。换句话说,仔细检查git reflog的输出,它将告诉您分支所有的过渡。然后,您可以使用git show commit_id检查并git checkout commit_id返回。

答案 3 :(得分:3)

老实说,我不知道发生了什么。

git reflog打印指向的分支提交。 您可以使用它来查找最近本地提交的SHA1总和。