Gitlab 强制推送提示错误

72 阅读1分钟

场景

1、想删除本地所有log记录,记录里面有一些敏感信息。

2、返回某个记录的时候,需要用到强制推送

清除 git 所有历史提交记录方案

1.创建新分支

语法:git checkout --orphan <new_branch>

使用 --orphan 选项,可创建1个"清洁"分支(无任何的提交历史,但是当前分支的内容一应俱全。但严格意义上说,这样创建的分支还不是一个真正的分支,因为HEAD指向的引用中没有commit值,只有在进行一次提交后,它才算得上真正的分支。

注意:

新的分支名可以随意命名,但不能和以前的分支名冲突。这儿特别强调是因为很多人习惯默认将分支名创建为 master.
本文以 latest_branch 作为新分支名,这个名称没有任何特殊含义,你可自定义,只要保证和以后的使用一致即可。

2.实现步骤

    git checkout --orphan new_branch 创建临时分支
    
    git add . //提交所有文件
    
    git commit -m 'xxx'  //提交说明
    
    git branch -D master //删除原来的主分支
    
    git branch -m master //重新命名
    
    git push origin master --force  //代码推送到远程仓库
    
    

推送报错

GitLab: You are not allowed to force push code to a protected branch on this project

1、如果用的是gitlab版本库,这说明gitlab对仓库启用了保护。

解决办法:

"Settings" -> "Repository" -> "scroll down to Protected branches".

2、原因是普通用户分配的权限是developer,这个权限的用户是没有权限推送代码的。

解决办法:

登录gitlab管理员账号 -> Project members -> set members