zoukankan      html  css  js  c++  java
  • 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
    

    参考

  • 相关阅读:
    Linux文件权限详解
    linux软链接和硬链接的区别
    linux vi编辑常用命令
    juery下拉刷新,div加载更多元素并添加点击事件(二)
    性能调优常见问题与方案
    测试人员怎么避免背黑锅?
    测试部工作检查观点
    如何为一组任务确定计划,估计每个任务所需的时间?
    测试人员和开发人员如何更高效的配合工作
    测试人员职业规划
  • 原文地址:https://www.cnblogs.com/wjw-blog/p/11112834.html
Copyright © 2011-2022 走看看