实现方式:
可以通过reset(回退)/revert(反做)两种方式实现。
适用场景:
reset :如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。比如我们commit了三个版本(版本一、版本二、 版本三),想回退到版本一,版本二,版本三都不要,就可以通过reset回退
revert:如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西
具体操作:
1.git reset
git reset --hard 目标版本号
目标版本号可以通过以下方式获取
可以通过git log 命令查看
也可以通过gitLab查看
git push origin master -f
具体例如
git reset --hard 3a24dfabef5ed07376ef3eaa5a75fd9f290ee9f2
git push origin master -f
注意:
当我们有时候回滚了代码,想强制push到远程仓库的时候,
git push origin --force
会报如下错误:
You are not allowed to force push code to a protected branch on this project
这是因为项目分支master设置了保护所致,是为了防止别人乱提交代码设置的
可以到项目的Settings页面下找到Protected Branches,有如下两种解决方法
1.可以直接点该分支旁的Unprotect按钮,解除保护,但是这种方法不推荐
2.第二种方法是在Allowed to push下选择允许那些角色或具体那些用户可以提交,在这里可以选择你自己
设置完毕后再重新提交就成功了。
git撤销本地commit
git reset HEAD~
2.git revert
git revert -n 目标版本号 (注意: 这里可能会出现冲突,那么需要手动修改冲突的文件。而且要git add 文件名。)
git commit -a -m '注释说明'
git push origin