git reset 之后的恢复
发布网友
发布时间:2022-11-23 10:18
我来回答
共1个回答
热心网友
时间:2024-12-14 09:23
又没有提交本地的修改,然后使用 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 目录下面可以找到自己已经丢失的文件。文件不会是原来的名字,需要自己打开去查看和对比。
只能重写了。