无法从 Gitlab 中删除名为分支的 40 个字符
Cannot remove 40 characters named branches from Gitlab
我有一个 Gitlab 存储库,其中包含我以前没有注意到的陈旧分支。我认为它们是由 Gitlab 创建的,当时其中一位用户使用内置文件编辑器对存储库进行了更改。他们有自动生成的名字,看起来像这样 0a9cc10e66e4e7e48bf7a7fc302e5dc25dd21416
.
问题是,我不知道如何删除这个分支。
当我按下“删除分支”按钮时,Gitlab UI return 代码 400
。
git cli 也失败了。
git branch --all
* master
remotes/origin/0a9cc10e66e4e7e48bf7a7fc302e5dc25dd21416
remotes/origin/HEAD -> origin/master
remotes/origin/master
git push origin --delete 0a9cc10e66e4e7e48bf7a7fc302e5dc25dd21416
remote: GitLab: You cannot create a branch with a 40-character hexadecimal branch name.
有什么方法可以完成这个任务吗?
错误响应的原因是主动推送规则。 GitLab 为 git push
事件提供自定义挂钩。一种这样的挂钩是以下安全检查,默认情况下激活。
By default, GitLab restricts certain formats of branch names for security purposes. 40-character hexadecimal names, similar to Git commit hashes, are prohibited.
https://docs.gitlab.com/ee/push_rules/push_rules.html#default-restricted-branch-names
建议的解决方案:Remove/Replace 现有推送规则。
不过,这是一项高级功能。
所有项目:打开管理区域 > 推送规则
仅限一个项目:打开项目 > 设置 > 存储库 > 选项卡 »推送规则«
备选方案:使用 API 删除分支。
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://<your-gitlab-instance>.com/api/v4/projects/<project-id>/repository/branches/<branch-name>"
这是一个 GitLab 错误。他们在 GitLab 12.10 中添加了检查以防止创建具有 40 个十六进制字符的分支:
Default restricted branch names
Introduced in GitLab 12.10.
默认情况下,GitLab 出于安全目的限制某些格式的分支名称。禁止使用 40 个字符的十六进制名称,类似于 Git 提交哈希。
但是他们不允许删除这样的分支。
这已在 v14.6 中修复,现在可以再次删除那些遗留分支:请参阅 relevant issue and merge request。
我有一个 Gitlab 存储库,其中包含我以前没有注意到的陈旧分支。我认为它们是由 Gitlab 创建的,当时其中一位用户使用内置文件编辑器对存储库进行了更改。他们有自动生成的名字,看起来像这样 0a9cc10e66e4e7e48bf7a7fc302e5dc25dd21416
.
问题是,我不知道如何删除这个分支。
当我按下“删除分支”按钮时,Gitlab UI return 代码 400
。
git cli 也失败了。
git branch --all
* master
remotes/origin/0a9cc10e66e4e7e48bf7a7fc302e5dc25dd21416
remotes/origin/HEAD -> origin/master
remotes/origin/master
git push origin --delete 0a9cc10e66e4e7e48bf7a7fc302e5dc25dd21416
remote: GitLab: You cannot create a branch with a 40-character hexadecimal branch name.
有什么方法可以完成这个任务吗?
错误响应的原因是主动推送规则。 GitLab 为 git push
事件提供自定义挂钩。一种这样的挂钩是以下安全检查,默认情况下激活。
By default, GitLab restricts certain formats of branch names for security purposes. 40-character hexadecimal names, similar to Git commit hashes, are prohibited.
https://docs.gitlab.com/ee/push_rules/push_rules.html#default-restricted-branch-names
建议的解决方案:Remove/Replace 现有推送规则。
不过,这是一项高级功能。
所有项目:打开管理区域 > 推送规则
仅限一个项目:打开项目 > 设置 > 存储库 > 选项卡 »推送规则«
备选方案:使用 API 删除分支。
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://<your-gitlab-instance>.com/api/v4/projects/<project-id>/repository/branches/<branch-name>"
这是一个 GitLab 错误。他们在 GitLab 12.10 中添加了检查以防止创建具有 40 个十六进制字符的分支:
Default restricted branch names
Introduced in GitLab 12.10.
默认情况下,GitLab 出于安全目的限制某些格式的分支名称。禁止使用 40 个字符的十六进制名称,类似于 Git 提交哈希。
但是他们不允许删除这样的分支。
这已在 v14.6 中修复,现在可以再次删除那些遗留分支:请参阅 relevant issue and merge request。