场景:在使用git进行代码提交的时候不小心执行了git reset 命令进行了版本回退但是在这之前进行了git add . git commit -m "提交"等命令,正常情况下就可以直接使用 git reset 版本号 进行代码的回退,但是发现自己不能找打上一个提交的版本号,
但是回退之前的代码没有在暂存区找到,导致不能使用git reset --hard 版本号方法回退到提交之前的代码,我想是我没有存到暂存区吗??这个问题应该怎么解决,代码都丢失了。通过查询最终我找回了自己的代码
最终通过 Git fsck
git fsck
是Git提供的一个底层命令,用于检查Git对象库的完整性和一致性。它会扫描Git对象库中的所有对象,并输出一些可能存在的问题,如损坏的对象、丢失的链接等。
执行git fsck命令之后的输出 这里我们发现了 dangling commit
检查过程包括检查对象目录和对象本身的完整性。在你的输出中,"dangling commit"表示有一些孤立的提交(commit),它们没有被任何分支或标签引用,也没有直接指向其他提交。这些提交可能是因为之前的操作导致的,比如删除了分支或标签,但提交对象仍然存在,因此被称为"孤立"
最终找到了孤立的提交 重点进行了提交,所以使用
git reset --hard 版本号
成功进行了版本回退
再次进行提交代码操作的时候就执行了
git branch --新的分支名字 // 创建分支操作
git checkout 分支名称 // 切换分支
或者
git checkout -b 新分支名称 // 创建分支的同时,切换到该分支上
之后就是
git pull origin 远程分支名称
这样就进行了代码的推送,避免和主分支产生冲突导致代码报错等问题!
参考博客
☞十一 的博客
Cloud_N 的博客