描述問(wèn)題
小喵收到需求要做產(chǎn)品A槽惫,之后提交commit A1, A2, A3并且同時(shí)同步到了遠(yuǎn)程分支origin master饮睬。生活總是辣眼睛的现恼,開(kāi)發(fā)到一定程度后因?yàn)橐欢ǖ脑虺蜂N(xiāo)需求A凛澎,要回退到版本到A,本地rest即可适掰,但是如何把遠(yuǎn)程版本回退呢颂碧?
小喵在網(wǎng)絡(luò)一頓搜索和嘗試,請(qǐng)教同事之后有了這個(gè)解決方案
解決方案
- 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 //強(qiáng)制push到遠(yuǎn)端
- push 問(wèn)題:這一步如論我怎么push使用各種push都不行载城,其中遇到這些報(bào)錯(cuò)信息:
1: 說(shuō)我的分支和遠(yuǎn)端比較少了commit,預(yù)料范圍內(nèi)费就,需要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:說(shuō)我沒(méi)有權(quán)限強(qiáng)制push code诉瓦, 需要去掉保護(hù)分支
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To http://gitlab/project
-
添加用戶權(quán)限,去掉保護(hù)分支
|> 去項(xiàng)目目錄 力细,|> 左側(cè)欄睬澡,settings點(diǎn)擊 ,|> Repository , |>右側(cè)目錄欄找到 Protected Branches |> Expand
把Master(你要回退的分支) 放到Protect a branch 里面眠蚂,選擇可以操作的角色煞聪。
再次執(zhí)行$git push origin master --force
完成回退了,小喵開(kāi)開(kāi)心J呕邸N舾啄糙!
- revert and reset
Revert: git revert是用于“反做”某一個(gè)版本,以達(dá)到撤銷(xiāo)該版本的修改的目的
- 使用“git revert -n 版本號(hào)”反做云稚,并使用“git commit -m 版本名”提交
- 使用“git push”推上遠(yuǎn)程庫(kù):