美文网首页
Gitlab 清空master分支

Gitlab 清空master分支

作者: 一瓶多先生 | 来源:发表于2020-12-18 10:25 被阅读0次

    日常开发中经常碰到需要清空一个分支中的提交记录重新进行提交, 之前使用gitlab因为保护分支的原因重来没有成功过,笨办法就是删了项目重建,进行了一大圈的搜索喝了一瓢盗泉之水扒来如下实践记录。

    假设当前有一个git仓库, 需要删除master分支的所有commit记录, 执行如下操作。

    新建空白分支

    git checkout --orphan null_branch
    git add -A
    git commit -am "Init commit."
    

    删除旧的master分支

    git branch -D master
    

    修改null_branch为master分支

    git branch -m master
    

    推送到远程仓库,f参数意思为force,会覆盖远程仓库的master分支

    git push -f origin master
    

    主要问题出现在这里, 推送后会报错, 因为master分支默认为保护分支所以需要进入gitlab取消保护分支

    ➜  git push -f origin master
    Enumerating objects: 4, done.
    Counting objects: 100% (4/4), done.
    Writing objects: 100% (4/4), 279 bytes | 279.00 KiB/s, done.
    Total 4 (delta 0), reused 1 (delta 0)
    remote: GitLab: You are not allowed to force push code to a protected branch on this project.
    To git.example.com:devops/example.git
     ! [remote rejected] master -> master (pre-receive hook declined)
    error: failed to push some refs to 'git@git.example.com:devops/example.git'
    

    登录gitlab取消保护分支

    找到对应的仓库--> setting --> Protected Branches --> unprotect

    取消后push就可以正常push了, 不过不能忘记将master分支重新设置为保护分支

    查看分支状态

    git branch
    
    git log 
    

    将现有dev分支更改为master分支。

    登录gitlab取消保护分支

    找到对应的仓库--> setting --> Protected Branches --> unprotect

    取消后push就可以正常push了, 不过不能忘记将master分支重新设置为保护分支

    git checkout dev
    

    删除原来的master分支

    git branch -D master
    

    将dev分支更名为master

    git branch -m master 
    git push -f origin master
    

    创建原来的dev分支

    git checkout -b dev
    

    将修改push到git仓库中

    git push --set-upstream origin dev
    

    在gitlab中将master重新设置为保护分支

    相关文章

      网友评论

          本文标题:Gitlab 清空master分支

          本文链接:https://www.haomeiwen.com/subject/fndxnktx.html