写在前面:
解决错误的最好的方式就是把错误扼杀在摇篮里,解决问题要仔细思考,然后慢慢验证,问题出现不可怕,可怕的是不断引入新错误
1、误操作git reset --hard HEAD^
首先首先明白这个命令的含义:
git reset --hard HEAD 是将工作区、暂存取和HEAD保持一致
举例:假设你现在有两个提交 用git log查看
committed_B
committed_A
现在committed_B提交的代码有问题,你现在你要撤销它
你使用了git reset --hard HEAD^
那么现在git log就会变为:
committed_A
同时使用git status没有任何需要git add的文件
因为你代码工作区 暂存区保持一致,因此现在相当于commited_B完全消失了,但是别急,可以找回:
使用git reflog查看过去提交的log
第二使用git cherry-pick取回丢失的提交
具体操作如下:
(1)git reflog
有三个log:
HEAD@{0}:你执行的git reset --hard HEAD^的log
HEAD@{1}:committed_B
HEAD@{2}:commited_A
(2)因为我们想要找回committed_B因此只需要用:
git cherry-pick 836ab53 即可 后面的数字是committed_B的hash值的前七位
至此成功找回丢失的提交
写在后面:
建议使用git reset HEAD^
或者:git reset --soft HEAD^
这样使用,工作区还会保留代码,有修改的余地,除非完全确定,否则不要轻易使用--hard
版权归原作者 疯码妞不相及 所有, 如有侵权,请联系我们删除。