项目场景:
代码git commit 后,想要撤回使用了错误的命令
git reset --hard HEAD^
(该命令功能是撤回commit,并且放弃对文件做的所有更改),此时所有提交的代码丢失了,先要找回丢失的代码
问题描述
使用了错误的命令
git reset --hard HEAD^
,导致代码丢失,需要找回
原因分析:
想要撤回
git commit
命令提交的内容,但是不想要代码丢失,应该使用命令
git reset --soft HEAD^
(撤回commit并保留对文件的更改以便重新提交),而不应该使用
git reset --hard HEAD^
(撤回commit,并且放弃对文件做的所有更改)
解决方案:
前提:
git上传代码到仓库add、commit、push,代码必须是commit过的才有效,只有add不行。
第一步:
git fsck --lost-found
找到commit过的代码痕迹,dangling commit后面跟的就是代码。
第二步:
git show [dangling commit后面的字符串]
查看是否是自己删除的代码。
第三步:
git rebase [dangling commit后面的字符串]
完成上述3个步骤即可恢复已经提交但是被
git reset --hard HEAD^
命令删除的代码了
注意:在cmd窗口中使用命令
git reset --soft HEAD^
会提示more,因为cmd控制台中换行符默认是^ ,而不是\,所以more?的啥意思是问你下一行是否需要再输入,而^符号就被当做换行符而被git命令忽略掉了,解决方法为使用
git reset --soft "HEAD^"
版权归原作者 Aristozjx 所有, 如有侵权,请联系我们删除。