Gitlab 清空master分支

日常开发中经常碰到需要清空一个分支中的提交记录重新进行提交, 之前使用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重新设置为保护分支

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 找了好久,终于搞定了。只能master分支保护只能限制在no one,如果需要开的话,再取消保护 import g...
    王宇_any阅读 587评论 0 0
  • 吕 倡 博客吕倡-搭建 GitLab 服务器吕倡-(项目管理 进阶篇)Git 团队版本管理 原则与思路Git教程 ...
    霄峰阅读 1,698评论 0 3
  • 最近公司需要让我将Git的使用规范起来,在规范的过程中发现了一些问题。 “git commit”时的消息不够规范,...
    失去记忆5656阅读 1,615评论 0 0
  • 参考廖雪峰老师的git教程 基本操作 git安装 在Windows上使用Git,可以从Git官网直接下载安装程序,...
    haigeek阅读 60,895评论 0 13
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 10,840评论 0 11

友情链接更多精彩内容