描述问题
小喵收到需求要做产品A,之后提交commit A1, A2, A3并且同时同步到了远程分支origin master。生活总是辣眼睛的,开发到一定程度后因为一定的原因撤销需求A,要回退到版本到A,本地rest即可,但是如何把远程版本回退呢?
小喵在网络一顿搜索和尝试,请教同事之后有了这个解决方案
解决方案
- git reset操作:
$git pull origin master // 更新到线上最新版本
$git log // 查看日志,找到需要回退的commitID
-----
commit eddac1fca9e5d796904d5d884ae7eb91f636999e (HEAD -> master, origin/master, origin/dev, origin/HEAD, dev)
Author: 小喵
Date: Tue Jul 21 20:46:19 2020 +0800
A3: I like eat.
*
* Here are many commits
*
commit 454bbc9ceb13666ebd9611dfdba4f3e7f5672019
Author: 小喵
Date: Fri Jul 17 19:35:57 2020 +0800
A0: I like sleep
-----
$git reset 454bbc9 // 版本充值到HEAD:454bbc9
这里可能需要整理冲突
$git push origin master --force //强制push到远端
- push 问题:这一步如论我怎么push使用各种push都不行,其中遇到这些报错信息:
1: 说我的分支和远端比较少了commit,预料范围内,需要force push
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
2:说我没有权限强制push code, 需要去掉保护分支
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To http://gitlab/project
-
添加用户权限,去掉保护分支
|> 去项目目录 ,|> 左侧栏,settings点击 ,|> Repository , |>右侧目录栏找到 Protected Branches |> Expand
把Master(你要回退的分支) 放到Protect a branch 里面,选择可以操作的角色。
再次执行$git push origin master --force
完成回退了,小喵开开心!!!
- revert and reset
Revert: git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的
- 使用“git revert -n 版本号”反做,并使用“git commit -m 版本名”提交
- 使用“git push”推上远程库: