Git强制覆盖master
场景
由于公司的项目中,有一个开发分支(这里假设dev
)是一个严重偏离master
,需要我去强制覆盖master
。
问题
这个场景带来了两个问题:
-
master
是受保护不能强推 -
dev
分支是一个严重偏离master
的分支,无办法先合并到master
再正常推送,因为会有大量的冲突
解决
虽然无法合并进入master
,但是这个开发分支是可以直接覆盖远程的master
的。经过调研,这里记录下解决步骤:
1. 解开master分支的保护
以gitlab为例,默认是不允许对master分支强推的,所以我们在开始前先对master分支暂停保护。
2. 执行命令
// 备份master
git checkout master
git checkout -b master-backup
// 重置并强推master(强推前解开master的保护)
git checkout dev
git checkout master
git reset --hard dev
git push -f
git reset --hard branch //可以重置到指定分支的最新提交记录上