回滚代码

工作中我们时常会遇到回滚代码的需求

分两种情况,push上去了,和没有push(只是commit/add了)

如果没有push上去,命令是 git reset,如果push上去了使用git revert

git reset 的功能是回退本地的代码,并不会改变线上的代码,git reset 有3个参数可用

1.git reset --mixed +版本号    暂存区(add区)和提交区(commit区)会回退到某个版本,本地的代码不会改变。

2.git reset --soft +版本号      提交区(commit区)会回退到某个版本,暂存区(add区)不会回退,本地代码不变。

3.git reser --hard +版本号     暂存区(add区)和提交区(commit区)会回退到某个版本,本地的代码会改变。

git revert 的功能是回退线上代码

git revert +版本号 -》输入commit的message,生成一个新的commit,-》push 覆盖线上的版本

这样就完成了线上版本的回退

git revert 的快捷命令

git revert HEADE  回退到上一次提交的版本

git revert HEADE^ 回退到上上次提交的版本

下面介绍用命令行回滚和用sourceTree回滚代码

我在工作中使用sourceTree工具,如果想把本地代码重置到某一次提交,可以在想回到的版本的位置右键,选择右键菜单中的‘将xxx重置到这次提交’,

 

在提示框中点击确定,此时本地仓库中的代码回退到了选中的版本中,也就相当于commit之前,然后在‘文件状态中’出现了你的本地代码和本地仓库中的代码不同的部分,也就相当于你现在在本地代码中修改的部分。

分支旁边也会出现箭头

向下的箭头表示你本地的代码和线上仓库中的代码有7处差别

此时如果想放弃本地代码的更改,使用线上仓库的代码版本,可以选中文件,右键,在右键菜单中选择‘重置’

在弹出的确认框中点击确定,此时就放弃了你本地代码的更改,现在‘拉取’线上代码

 

就会同步线上仓库的代码到本地,此时本地仓库的代码和线上仓库就版本一致了。

命令行的回滚 git reset --hard 465dd43

在分支旁边显示和线上版本的差距,此时‘拉取’,就会同步本地的代码为线上代码的版本。

以上这些都是适用于coomit之后,push之前,想回退commit的内容的场景,线上仓库的代码版本是没有回退的,回退的只是本地仓库的版本

如果想回滚线上仓库的版本怎么办呢?

先说命令行的方式 git revert +版本号 意思是回退xxx版本提交的修改,也只会回退xxx版本提交的修改,如果最新版本和xxx版本之间还间隔着其他版本的修改,其他版本的修改是不会回退的。

如果回退的时候出现冲突,如下图,需要手动解决冲突,再commit

之后执行git push ,完成线上版本的回退

再来看sourceTree,在想要回滚的版本位置右键-选择提交回滚,如果有冲突需要手动解决,然后push,完成线上版本的回退

 

有点啰嗦地整理完了,希望对日后地工作有帮助

原文地址:https://www.cnblogs.com/lijianjian/p/9636339.html