欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Git小技巧——撤销&回滚操作revert和reset——一看就会

程序员文章站 2022-06-07 22:40:21
...

最近需要删除某些已经提交的commit。便想到revert和reset。由于理解不深,在使用revert遇到了一个坑。

区别:

revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;
reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。

之前读到上面的话,自以为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






正在去往BAT的路上修行