You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab克隆仓库推送Azure DevOps遇RefNames错误,求无需重命名的解决办法

解决Azure DevOps推送时“RefNames consisting of 40 hex characters are not allowed”错误(无需重命名分支/文件)

你遇到的错误是因为Azure DevOps禁止名称为纯40位十六进制字符的引用(这类引用通常是GitLab仓库中遗留的孤立commit引用、临时引用等),而git push --mirror会推送本地仓库的所有引用,包括这类违规引用,触发了平台限制。

以下是无需重命名分支或文件的解决方案:

1. 定位违规引用(可选)

执行命令查看本地所有符合40位十六进制命名规则的引用:

git for-each-ref --format="%(refname)" | grep -E 'refs/(heads|tags)/[0-9a-f]{40}$'

该命令会列出所有触发Azure限制的引用名称。

2. 选择性推送分支和标签(替代--mirror)

放弃--mirror参数,改用仅推送分支和标签的方式避开违规引用:

  • 推送所有分支到Azure DevOps(替换azure为你的远程仓库名称,可通过git remote -v查看):
    git push -u azure refs/heads/*:refs/heads/*
    
  • 推送所有标签:
    git push azure refs/tags/*:refs/tags/*
    

也可以用更简洁的命令一次性完成分支和标签推送:

git push azure --all --tags

--all仅推送所有分支,--tags仅推送所有标签,不会包含那些违规的特殊引用。

3. 清理本地无效引用(可选)

如果本地存在失效的引用,先清理再推送:

git remote prune origin
git gc --prune=now

这会移除本地已失效的远程引用和垃圾对象,可能自动清除掉那些违规的孤立引用。

内容的提问来源于stack exchange,提问作者Hari5679

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 08:33:24