git将一个分支的代码强制覆盖到另一个分支
# 背景
当前开发的项目一共两个分支,一个是默认的master
分支,另一个是dev1
开发分支。由于master分支的代码很久都没更新了,今天试着将dev1
分支的代码merge到master
分支,但是在合并的时候,出现了很多冲突,由于出现冲突的代码文件较多,不想一个一个文件去修改冲突(master
分支的代码基本上就没啥需要了),所以就想到了将dev1
分支的代码强制覆盖到master
分支。
# 步骤
- 项目根目录下先切换到
master
分支git checkout master
1 - 重置
master
分支的HEAD、索引和工作区跟dev1
分支的重置 HEAD、索引和工作区保持一致git reset --hard origin/dev1
1 - 在
master
分支上随便修改一些不会与dev1
分支合并时造成冲突的文件(比如在.gitignore
文件中随便添加一些内容) - 提交更改并强制推送到远程仓库
git add . git commit -m 'merge dev1 to master' git push -f origin master
1
2
3 - 有时候远程仓库部署在
gitlab
的话,在执行最后一条命令git push -f origin master
时会出现以下报错(venv) pc@mypc:~/PycharmProjects/mypro$ git push -f origin master 对象计数中: 3, 完成. Delta compression using up to 8 threads. 压缩对象中: 100% (3/3), 完成. 写入对象中: 100% (3/3), 316 bytes | 316.00 KiB/s, 完成. Total 3 (delta 2), reused 0 (delta 0) remote: GitLab: You are not allowed to force push code to a protected branch on this project. To git.n.hahaha.com:dp-qa/mypro.git ! [remote rejected] master -> master (pre-receive hook declined) error: 无法推送一些引用到 'git@git.n.hahaha.com:dp-qa/mypro.git'
1
2
3
4
5
6
7
8
9
10
这是因为gitlab对仓库启用了保护,需要在仓库中解除一下master
分支的保护,等代码推送到远程仓库后,再把分支保护开启就可以了。
解决方法如下:
进入gitlab当前仓库详情页面,在项目的Settings
页面下找到Protected Branches
,再点击expand
即可看到。有如下两种解决方法:
- 可以直接点该分支旁的
Unprotect
按钮,解除保护,但是这种方法不推荐 - 第二种方法是在
Allowed to push
下选择允许那些角色或具体那些用户可以提交,在这里可以选择你自己。
设置完毕后再重新提交就成功了。
编辑 (opens new window)
上次更新: 2021/08/10, 00:23:06
- 01
- Python实现对字符串的加解密02-25
- 02
- Python3对大文件中指定字符进行排序再写入到新的文件10-24
- 03
- Ubuntu下配置adb环境连接Android设备进行调试08-17