git:如何做代码回滚
代码回滚的场景:当别⼈把⼀些⽂件上传到服务器,你更新代码之后,出现了本地代码⽆法运⾏的情况;产品上线之后,出现了紧急bug,⼀时⽆法修复时,为了保证线上稳定,需要做代码回滚。
回退的步骤如下:
1)查看分⽀提交历史,确认需要回退的版本
git log
2)进⾏版本回退
git ret --hard commid_id
3)推送到远程分⽀
git push origin
⼀个⽅便的写法:
git ret --hard HEAD^
campaigns备注:HEAD是指向当前版本的指针,HEAD^表⽰上个版本,HEAD^^表⽰上上个版本。⼀般回退更多的是到上⼀个版本。
其他:
1)撤销修改
有些时候为了验证Bug,可能在会在测试服务器上打断点调试,如果忘记去掉调试内容,在执⾏git pull更新时,Git会提⽰你提交修改。
此时,如果你不记得修改了哪些,可以⽤git checkout -- file命令,来清空⼯作区的修改。theslam
如果要撤销提交到暂存区的⽂件内容:即执⾏git add之后,此时步骤如下:
git rer HEAD file ///撤销提交到暂存区的内容
git checkout -- file ///撤销修改
2)ret与revert
回滚时使⽤ret和revert是有区别的。ret是⽤来回退版本,revert是⽤来还原某次或某⼏次提交。
如在master分⽀,提交历史如下:
42eae13 (HEAD -> master) 第四次修改
97ea0f9 第三次修改
e50b7c2 第⼆次修改
3a52650 第⼀次修改dcim
⽰例1: 如果发现第4次修改有错误,需要回滚到第三次,使⽤ret,执⾏
git ret --hard 97ea0f9
此时,Git的提交历史为:
97ea0f9 (HEAD -> master) 第三次修改
e50b7c2 第⼆次修改
3a52650 第⼀次修改
使⽤ret命令,Git会把要回退版本之后提交的修改都删除掉,要从第四次修改回退到第⼀次修改,那么第2,3,4次的修改都会被删除(并不是物理删除)。
⽰例2:如果发现第三次修改有错误,想恢复第3次修改,但保留第四次修改,可以使⽤revert网络用语bks是什么意思
广州中专git revert -n 97ea0f9
git commit -m "恢复第三次修改"
play boyGit的提交历史为:
33b8b30 (HEAD -> master) Revert "恢复第三次修改"
42eae13 第四次修改
wto什么意思97ea0f9 第三次修改
where is my watere50b7c2 第⼆次修改
3a52650 第⼀次修改
即,Git把第三次修改从提交中还原了,还保留了第四次修改,且产⽣了新的commit_id
激活英文
速度与激情男主角去世
------------------
在实际⽣产环境中,代码是基于master分⽀发布到线上的,会有多⼈进⾏提交,需要做代码回滚时,如果别⼈没有最新提交,那么可以直接⽤ret命令进⾏版本回退,否则,就可以考虑使⽤revert命令进⾏还原修改,不能影响别⼈的提交。
上⾯的删除并不是真正的物理删除,因为Git会把分⽀的每次修改记录保留下列,如有某次的commit,某次的ret等,使⽤git reflog show 命令,可以查看完整的提交历史。
只要有commid_id,就能恢复任意版本的代码,在各版本之间来回穿梭。