一、场景
本地提交了代码到master,并推送到主分支了。需要回滚到具体的某个节点。本篇博客主要是讲诉该场景的处理方案。
二、环境
三、操作步骤
1、本地回滚
如果是idea可视化操作,可以直接切换到git log框,选中分支,然后再右键选择的commit信息,选择 Reset current branch to to Here ,如图:
 然后根据实际情况,选择回滚操作。一般是以下操作:

hard 模式则会抛弃当前工作区的修改;
而soft模式则是:回退到之前的版本,但保留当前工作区的修改,可以重新提交。
如果是命令模式,则按照以下命令:
git log
 如上图,红框就是版本号。 然后找到要回滚的版本号,进行回滚的时候,执行以下命令:
git reset --hard <版本号>
或
git reset --soft <版本号>
至此,本地回滚部分已经完成。那假如之前的东西已经提交到远端,则需要按照第二步执行。
2、gitlab远端回滚
执行以下命令:
git push origin <分支名>
在执行上述命令的时候,可能会提示本地的版本落后于远端的版本,导致提交失败。因此我们还需要在上述命令中加上–force参数:
git push origin <分支名> --force
3、问题
强制提交报错,提示如下:
service>git push origin master --force
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To service.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'service.git'
这个是因为gitlab对分支的保护,所以,需要先去掉对分支的保护,提交之后,再加入保护。如下: 
|