我遇到的場景
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
