美文网首页
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