我遇到的场景

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

参考

git强行覆盖master分支的更多相关文章

  1. Git强制覆盖master分支

    在开发中,通常会保持两个分支master分支和develop分支,但是如果因为develop上面迭代太多而没有及时维护master,最后想丢弃master而直接将测试确认过的develop强推到mas ...

  2. dev分支代码覆盖master分支代码

    将develop分支上的代码完全覆盖master分支, 1. 切换到master分支 git checkout master 2. 执行以下命令 git reset --hard origin/dev ...

  3. VS2013中使用git发布解决方案master分支的时候出现错误

    VS2013GIT基础用法请自行参考:不会Git命令,照样玩转Git 环境:VS2013+ 码云错误描述:在VS2013中使用git发布解决方案master分支的时候出现“无法将本地分支 master ...

  4. git 如何把master分支代码合并到自己的分支

    master分支的代码领先自己的分支,git 如何把master分支代码合并到自己的分支 1.首先切换到主分支 git checkout master 2.使用git pull 把领先的主分支代码pu ...

  5. GIT回滚master分支到指定tag版本

    master版本上线以后一般要打一个tag备份,以防事态有变,这是一个好习惯,如果以后有问题也可以放心的回滚版本,那么怎么用tag版本覆盖mastaer呢,其实只有几个命令 1.查看分支 git br ...

  6. centos下安装最新版本git(通过master分支下载最新版)

    centos6.7下安装最新版本git 本文参考:http://www.01happy.com/centos-install-latest-git/ 按照原博主所提供的思路安装可能会出现下列问题 解决 ...

  7. 如何删掉git版本库master分支的第一个commit

    这个操作会将库清空,一般来说在建库开始的时候操作. 适用场景: git init初始化版本库之后,提交第一个点之后发现这个点出问题了,但是此时内心如果有洁癖的话, 你会觉得不完美,很想把这个点干掉重来 ...

  8. git 删除远程master 分支

    ➜  fekit-extension-yo git:(dev) git push origin :master remote: error: By default, deleting the curr ...

  9. git 同步非master分支

    在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致: 建立本地分支和远程分支的关联,使用gi ...

随机推荐

  1. 剑指offer-递归和循环-python

    -斐波那契数列- 大家都知道斐波那契数列(1.1.2.3.5.8.13.21.34.……),现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 斐波那契数 ...

  2. 01Spring基于xml的IOC配置--入门

    01Spring基于xml的IOC配置 1.创建一个普通的maven工程 1.1 选择maven,不用骨架,点击下一步. 1.2 填写GroupId.ArtifactId.Version.填完点击下一 ...

  3. 七、for循环

    for循环

  4. Jdbc Driver驱动和ServerTimeZone时区的的问题

    一.JDBC驱动的版本号以及名称问题 区别: com.mysql.jdbc.Driver 是 mysql-connector-java 5中的 com.mysql.cj.jdbc.Driver 是 m ...

  5. git ssh 绑定 GitLab

    入职新公司之后,需要使用GitLab,可是我不会啊,又不想麻烦运维大佬,所以自己找乐一下,发现网上都是些很陈旧的教程,所以准备自己记录下来 第一步 设置Git端上的用户名和用户邮箱: 假如入你已经安装 ...

  6. Linux 学习 (一)

    最常用的7个Linux命令: cd:切换目录. pwd:查看当前所在目录. ls:查看目录下的文件. touch:没有文件则创建文件. mkdir:创建目录. mr:remove删除.         ...

  7. Big Data(一)分治思想

    按照课程安排,接下来半年,我将会去上一个为期半年的大数据课程.第一课是马士兵老师机构的周老师所讲,这里单纯记录讲课的内容. 问题1: 我有一万个元素(比如数字或单词)需要存储? 如果查找某一个元素,最 ...

  8. springboot-不同名称项目的 redis session共享

    引入JAR <dependency> <groupId>org.springframework.session</groupId> <artifactId&g ...

  9. Prism MVVM使用WPF的DataGrid控件

    此项目源码下载地址:https://github.com/lizhiqiang0204/PrismDataGird01 运行效果如下 前端代码如下 <Window x:Class="V ...

  10. 【30分钟学完】canvas动画|游戏基础(extra1-1):美图我也行

    前言 本文是接续系列教程的extra1,主要是介绍颜色系统在canvas中的应用. 本来是与extra1一起成文的,因为segmentfault莫名其妙的字数限制bug只能分割放送了. canvas操 ...