Gitlab 清空master分支

2020-12-18  本文已影响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重新设置为保护分支

上一篇 下一篇

猜你喜欢

热点阅读