git revert 类似于裁剪,可以想象成截取DNA片段,它不会影响剪裁所在位置commit后的操作,而reset会直接抛弃此commit及之后的全部提交,对于多人合作的分支不太安全。

第一步:查看你要回滚的某一次commit的详情,如果是merge得来的commit,会出现该commit的来源,即合并开始的位置和结束的位置
git show xxxx --stat
第二步:普通分支直接回滚;而含有开始结束位置的分支需要指定 -m 参数。1,代表主分支开始位置的commit;2,代表被合入分支的结束位置的commit,也就是合入的分支的最顶端commit,1和2之间的所有commit,就是该次merge所带入的新内容。-m 1就代表回滚该次merge所带入的全部内容(即保留1,回滚掉2,抽掉之间的全部commit)
git revert xxxx -m 1

如果分支一直处于REVERTING状态,可能是你最后选择了保留新内容,所以此次回滚没有意义,这时可以选择终止revert
git revert --abort

代码回滚的场景:当别人把一些文件上传到服务器,你更新代码之后,出现了本地代码无法运行的情况;产品上线之后,出现了紧急bug,一时无法修复时,为了保证线上稳定,需要做代码回滚。

回退的步骤如下:

1)查看分支提交历史,确认需要回退的版本

git log

2)进行版本回退

git reset --hard commid_id

3)推送到远程分支

git push origin

一个方便的写法:

git reset --hard HEAD^

备注:HEAD是指向当前版本的指针,HEAD^表示上个版本,HEAD^^表示上上个版本。一般回退更多的是到上一个版本。

其他:

1)撤销修改      

有些时候为了验证Bug,可能在会在测试服务器上打断点调试,如果忘记去掉调试内容,在执行git pull更新时,Git会提示你提交修改。

此时,如果你不记得修改了哪些,可以用git checkout -- file命令,来清空工作区的修改。

如果要撤销提交到暂存区的文件内容:即执行git add之后,此时步骤如下:

 
  1. git reser HEAD file ///撤销提交到暂存区的内容

  2. git checkout -- file ///撤销修改

2)reset与revert

回滚时使用reset和revert是有区别的。reset是用来回退版本,revert是用来还原某次或某几次提交。

如在master分支,提交历史如下:

 
  1. 42eae13 (HEAD -> master) 第四次修改

  2. 97ea0f9 第三次修改

  3. e50b7c2 第二次修改

  4. 3a52650 第一次修改

   示例1: 如果发现第4次修改有错误,需要回滚到第三次,使用reset,执行

git reset --hard 97ea0f9

此时,Git的提交历史为:

 
  1. 97ea0f9 (HEAD -> master) 第三次修改

  2. e50b7c2 第二次修改

  3. 3a52650 第一次修改

使用reset命令,Git会把要回退版本之后提交的修改都删除掉,要从第四次修改回退到第一次修改,那么第2,3,4次的修改都会被删除(并不是物理删除)。

示例2:如果发现第三次修改有错误,想恢复第3次修改,但保留第四次修改,可以使用revert

 
  1. git revert -n 97ea0f9

  2. git commit -m "恢复第三次修改"

Git的提交历史为:

 
  1. 33b8b30 (HEAD -> master) Revert "恢复第三次修改"

  2. 42eae13 第四次修改

  3. 97ea0f9 第三次修改

  4. e50b7c2 第二次修改

  5. 3a52650 第一次修改

即,Git把第三次修改从提交中还原了,还保留了第四次修改,且产生了新的commit_id

------------------

在实际生产环境中,代码是基于master分支发布到线上的,会有多人进行提交,需要做代码回滚时,如果别人没有最新提交,那么可以直接用reset命令进行版本回退,否则,就可以考虑使用revert命令进行还原修改,不能影响别人的提交。

上面的删除并不是真正的物理删除,因为Git会把分支的每次修改记录保留下列,如有某次的commit,某次的reset等,使用git reflog show 命令,可以查看完整的提交历史。

只要有commid_id,就能恢复任意版本的代码,在各版本之间来回穿梭。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐