git reset 之后的恢复

git reset 之后的恢复,第1张

又没有提交本地的修改,然后使用 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 控制下的某个文件,但是不满意,想回退到之前的版本。假定该文件为 src/main/main.c

解决方法:

第一步: 得到该文件的commit 历史

第二步: 复制需要回退版本的hash

第三步:检出对应版本,格式为: git checkout <hash><filename>

第四步: 提交检出下来的版本。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11684768.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存