git - 无法从 Gitlab 中删除陈旧的分支?
问题描述
我有一个 Gitlab 存储库,其中包含我以前没有注意到的陈旧分支。我认为它们是由 Gitlab 在其中一位用户使用内置文件编辑器对存储库进行更改时创建的。他们有自动生成的名字,看起来像这样 0a9cc10e66e4e7e48bf7a7fc302e5dc25dd21416
。
问题是,我不知道如何删除这个分支。400
当我按下“删除分支”按钮时,Gitlab UI 返回代码。并且 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
事件提供自定义挂钩。一个这样的钩子是以下安全检查,默认激活。
默认情况下,GitLab 出于安全目的限制某些格式的分支名称。禁止使用 40 个字符的十六进制名称,类似于 Git 提交哈希。
https://docs.gitlab.com/ee/push_rules/push_rules.html#default-restricted-branch-names
建议的解决方案:删除/替换现有的推送规则。
然而,这是一项高级功能。
所有项目:打开管理区 > 推送规则
仅一个项目:打开项目>设置>存储库>选项卡»推送规则«
备选方案:使用 API 删除分支。
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://<your-gitlab-instance>.com/api/v4/projects/<project-id>/repository/branches/<branch-name>"
推荐阅读
- flutter - Flutter 打印特定值
- opencv - openCV 如何使用物点和图像点估计焦距
- sql - 优化查询以获取其他表中不存在的 ID
- javascript - 根据选择选项更改 php 变量值
- sql - 如何在 SQL 中获得不同的路由?
- javascript - TypeError: Select is not a constructor when using Svelte and jest
- javascript - 承诺的 Vuex 模态?
- javascript - 在循环中使用 Node.js 中的 Axios 链接 API 请求 - 无法按顺序工作
- python - PySpark RDD:列数不匹配
- c# - 我应该如何设置一个在无限循环中执行慢速功能的计时器?(Winforms)