存档

文章标签 ‘git reflog恢复数据’

git reflog恢复git reset删除数据

2017年5月11日 没有评论

我经常用git reset来恢复自己的工作区,但是偶尔也会失误把错误的分支的commit记录给删除掉了。今天工作中也有遇到一次,本来要删除测试分支的commit记录,但是在操作时没有注意所在的分支,就把工作分支的内容误删除掉了。那么我们如何恢复这些commit记录哪?

当你 (在一个仓库下) 工作时,Git 会在你每次修改了 HEAD 时悄悄地将改动记录下来。当你提交或修改分支时,reflog 就会更新。因此我们就可以用reflog的记录来恢复我们的工作区。

查看reflog记录


git reflog

你会看到如下的内容:

229e8d31 HEAD@{1}: pull origin xx: Fast-forward
fd54ce35 HEAD@{2}: checkout: moving from xxx to xxxx
66010f88 HEAD@{3}: merge xxxxx8: Merge made by the 'recursive' strategy.
085b2dba HEAD@{4}: reset: moving to HEAD~1
0f0bfb7d HEAD@{5}: checkout: moving from xxxx to xxxxx
73e400ba HEAD@{6}: commit: xxxxxx
5e9d0305 HEAD@{7}: reset: moving to HEAD~1
2ef40139 HEAD@{8}: reset: moving to 2ef40139
5e9d0305 HEAD@{9}: reset: moving to HEAD~1
2ef40139 HEAD@{10}: checkout: moving from sit to xxx
0f0bfb7d HEAD@{11}: merge xxx: Merge made by the 'recursive' strategy.

恢复工作区
我们可以根据commit的SHA来用git reset恢复。

git reset --hard fd54ce35

这时我们被我们误操作的记录就已经被恢复了,可以用git log来查看git提交记录。

分类: git, Linux 标签: