git強行覆蓋master分支


我遇到的場景

1、master分支只為護較早的版本
2、由於業務不穩定,新業務和功能都在dev 分支上,dev的開發周期很長,一直變更迭代
3、從dev 分支切出來的小分支都先合並到的了dev,master分支很少合並。這就造成后來發版本大部分代碼都在dev上,dev分支上目錄解構和工程中的配置和master分支相比都有很大改變。
4、dev分支打的包已經上了生產。
鑒於這種情況,干脆直接把dev覆蓋到master上。

需要注意的預備操作

當然,做這種操作還需要考慮安全問題和其他同事的建議。確保大家口徑統一。
一般情況下,master分支是受保護的,沒有權限的人員是不能隨便合並分支,更不可能隨隨便便把它給覆蓋了。
所以第一步是到倉庫配置里先把受保護關閉
setting -> repository -> Protected Branches ->master 【unprotected】
記得覆蓋完后要重新將master保護起來
記得覆蓋完后要重新將master保護起來
記得覆蓋完后要重新將master保護起來

不然會因為沒有權限而報錯

Total 0 (delta 0), reused 0 (delta 0)
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To http://gitlab.pab.com.cn/xxx.git
 ! [remote rejected] dev -> master (pre-receive hook declined)
error: failed to push some refs to 'http://gitlab.pab.com.cn/xxx.git'

操作步驟

1、可以在一個新文件夾里把工程克隆下來
假設 你遠端有一個master 分支 有一個 dev分支

git clone -b dev yourRepositoryUrl 
git pull

2、把本地的dev 分支強制推送到遠端 master

git push origin dev:master -f

3、切換到舊分支master

git checkout master

4、下載遠程倉庫最新內容,不做合並

git fetch --all

5、把HEAD指向master最新版本

git reset --hard origin/master

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM