git reset 撤销
最近需要删除某些已经提交的commit。便想到revert和reset。由于理解不深,在使用revert遇到了一个坑。
区别:
revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;
reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。
1
2
之前读到上面的话,自以为revert可以回滚到某个过往的某个commit,并且保持与这个commit那个时候一模一样的代码,只不过这个commit之后提交commit只显示记录,但是代码没有。
即,a-b-c-d,想从d回撤到a,使用revert则变为了a-b-c-d-a_new的log记录,但是以为代码a_new与a一致。
【实际上】revert只是把commit a时的代码撤销,并且产生一个新的commit,但是b c d的代码都存在,而a的代码不存在。
所以revert为撤销某一个commit a处的代码,而不是回滚到commit a处!
若使用回滚到某处一模一样的代码则使用reset:
git reset --hard commit_id
记一次git revert误操作找回
源于自己的手贱,git revert 掉了代码,好在自己有commit记录,于是找了一下解决方案:
首先git reflog
查看本地commit记录
找到对应的commit id
最后git reset --hard [commit id]
作者:1024k纯金
链接:https://www.jianshu.com/p/269d6f221ec4
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
如果是reset 后发现删错了呢?
git reflog
然后再git reset
4 自己的远程分支版本回退的方法
如果你的错误提交已经推送到自己的远程分支了,那么就需要回滚远程分支了。
首先要回退本地分支:
git reflog
git reset --hard Obfafd
紧接着强制推送到远程分支:
git push -f
注意:本地分支回滚后,版本将落后远程分支,必须使用强制推送覆盖远程分支,否则无法推送到远程分支
————————————————
版权声明:本文为CSDN博主「方2郭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_35763513/article/details/112100406