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的路上修行