比如一个例子,提交的 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>
第四步: 提交检出下来的版本。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)