git reset 之后的恢复
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git reset 之后的恢复相关的知识,希望对你有一定的参考价值。
参考技术A 又没有提交本地的修改,然后使用 git reset —hard 改变了分支的内容。上一次是直接没有 git add ,导致修改的文件全部消失,这样即使是 git 也没有办法恢复,只能重新写一遍。这次好了一点点,使用了 git add ,但是还没有提交,查找了一番之后还是恢复了。记录这个过程,谨记慎重在开发用的机器上面使用 git reset —hard 。比如一个例子,提交的 commit 记录如下:
这时候使用了 git reset —hard ,提交记录变成如下:
没有远程仓库的情况下,如何才能恢复刚才丢失的 test 4 那条 commit 呢。可以使用 git reflog :
可以看到每一次的操作都被记录了起来。要恢复到 test 4 的那一次提交,只需要执行:
即可以恢复。
这个时候需要恢复可以执行以下步骤:
这里的 10q 指的就是你最近添加的 10 条 add 的记录,根据你丢失文件的多少进行选择。然后出现的信息如下:
objects 后面的部分就是一个 add 的ID,注意要去掉 / 符号。从上到下是最新的提交到旧的提交。执行:
会将 add 中的文件重新写到新文件中,进行恢复。
此外,还有一种方法进行恢复。执行:
然后去到 .git/lost-found 目录下面可以找到自己已经丢失的文件。文件不会是原来的名字,需要自己打开去查看和对比。
只能重写了。
git删除之后怎么恢复
参考技术A打开git库文件,可以看到文件夹内的所有文件都没了,只有一个git仓库还存在。
这时在文件夹上右击,在弹出的菜单中选择"Git Bash Here"这一项。
进入Bash页面后,我们执行ls操作,可以发现,文件夹下同样不存在文件。
这时我们再执行git reflog。
reflog它会记录所有HEAD的历史,也就是说当你做 reset,checkout等操作的时候,这些操作会被记录在reflog中。
如果我们要找回文件,只需要做如下操作(*表示上一步中出现的log号):
git reset --hard *
我们再次执行ls操作,可以发现文件已经还原回来了.
所以,如果因为reset等操作丢失一个提交的时候,你总是可以把它找回来。
以上是关于git reset 之后的恢复的主要内容,如果未能解决你的问题,请参考以下文章