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 之后的恢复的主要内容,如果未能解决你的问题,请参考以下文章

git删除之后怎么恢复

git reset之后找回本地未提交的代码

git reset回退版本后怎么恢复到当前版本

Git 版本恢复命令reset

恢复 git reset -hard 的误操作

从 git reset --hard 中恢复?