错误回退怎么办
场景:
在本地做完修改之后Git提交到了本地,但没有push到远程,此时远程仓库里的最新版本为1.2.2,远程的次新版本为1.2.1,本地的最新版本为1.2.3,
此时,需要将代码回退到远程的1.2.1版本,做一下紧急更新,很自然的,就直接reset到需要回退的地方,且选了hard,也就是所有的本地更新都会丢失,确认之后再pull或者CtrlZ都无法挽回hard reset操作了
这时候我们想回到1.2.3版本要怎么做呢?
1、git reflog :他记录了我们执行过的所有命令,在下图红框位置上显示我们在这个hash版本中进行了test的提交
2、git reset --hard +上步搜索到的hash值
执行成功后发现,1.2.3版本回来了!
一点点原理介绍,也是git回退这么快的原因:
1、git会将提交的所有版本都记录下来,并为每个版本分配一个hashId
2、Git在内部有一个指向当前版本的指针,当进行版本切换的时候仅仅是把指针指向了不同的位置