Git / 版本控制

Git 分支名检查找出名称里的具体问题

检查一个分支名、引用名或哈希,分别查看语法错误、命名建议与哈希前缀。

Git 分支名检查

名称或哈希输入

检查报告

输入名称或哈希后开始检查。

输入仅在当前浏览器中检查,不连接仓库,也不上传文本。

检查选项

每次输入一个值,最多 4,096 个 UTF-16 代码单元;诊断每批显示 50 条。

输入名称或哈希后开始检查。

Git 分支名检查适合排查终端只提示“名称无效”却没有指出位置的情况。复制进来的空格、路径段开头的点,以及看似普通的 .lock 后缀,都可能成为拒绝创建分支的原因。

先确定这段文字代表什么,再理解检查结论。main 可以是分支名,但严格引用模式要求斜杠;同样一串十六进制字符,在不同哈希算法下也可能具有不同长度含义。

Git 分支名检查能解释哪些问题

先定位,再决定如何修改

Git 分支名检查保留原始输入,逐项列出出错位置。候选分支名单独显示,便于比较;不会为了给出绿色结果就悄悄删掉空格、改写大小写,或替你抹去名字中的含义。

一排名称片段中的错误位置被突出标记,并连向独立诊断卡片

截取前缀与验证唯一性分开

发布说明通常只需要较短的对象标识。工具会从已有字符串中截取前缀,并说明它是完整 ID 还是缩写格式;没有仓库对象数据库,就无法判断这个前缀是否还匹配其他对象。

长片段的前部被复制到较短的一排,旁边的仓库符号保留问号

先选上下文,再看检查结论

01

对照分支与引用模式

切换模式会保留输入,可直接比较 main 与 refs/heads/main 的含义。引用名校验默认要求至少一个斜杠;允许单层引用只放宽这一条,不会放开点号、空格或非法序列。

  • 单独的 @ 在分支模式通过,在引用模式无效。
02

为哈希选择明确的算法

SHA-1 完整格式是 40 位十六进制,SHA-256 是 64 位。启用缩写后接受 4 位至完整长度减 1 的字符串;同一段 40 位文字会随所选算法改变分类。

  • 默认展示前 7 位;如果输入只有 4 位,就只展示这 4 位,不会补零。
03

确认报告对应当前输入

自动检查等待 350 毫秒,关闭后显示手动检查按钮,也可按 Ctrl/Cmd + Enter。点击某条诊断可以跳到输入的对应行列。

  • 输入或选项改变会立即禁用导出;检查完成后,即使报告判定无效,也能导出诊断。

语法、命名建议和对象标识各有依据

分支规则与引用规则分开

Git 分支命名规则会额外拒绝 HEAD 和开头的连字符。引用模式可显式允许单层名称。核心检查参照 git check-ref-format 的字面名称规则,不执行命令,也不展开上一次检出记录。

不可见字符也能定位

报告识别 ASCII 控制字符、空格、禁用标点以及 ..、@{ 等序列。斜杠分隔的段不能以点开头或以 .lock 结尾。位置采用从 1 起算的行列,列按 UTF-16 代码单元计数,JSON 还保存精确偏移。

独立生成可审阅的候选名

候选生成会将 ASCII 字母转小写,把安全字符集以外的文字替换为连字符,并再次校验结果。中文不会被音译;若没有可保留的字母数字,就回退为 branch。候选只供复制,不直接修改输入。

完整哈希与短 SHA 区分展示

哈希报告记录算法、实际长度、完整或缩写类别及展示前缀。大写十六进制原样保留。这里检查的是对象 ID 的字符串格式,既不计算文件哈希,也不把一种算法的 ID 转换成另一种。

必须回到仓库确认的边界

格式合法不能证明对象存在
本页无法确认提交存在、对象属于提交类型、缩写唯一,或分支能否创建。已有 foo 与新建 foo/bar 的冲突、权限、保护分支规则和文件系统限制,都需要结合实际仓库判断。
不清理输入,也不按行批处理
粘贴的首尾空白会参与检查,换行按非法控制字符定位。HEAD~1、main^、@{-1} 等修订表达式,以及含通配符的 refspec,不属于字面名称检查范围。没有文件上传或 URL 拉取入口。
语法错误与平台建议不同
Git 接受某些需要 shell 引号保护的字符。ASCII 命名建议及 GitHub 对 refs/ 前缀、40 位十六进制分支名的限制单独说明,不影响 Git 语法结论。工具不执行团队自定义正则或保留名黑名单。
输入预算不是 Git 的长度上限
单次最多处理 4,096 个 UTF-16 代码单元。这是本工具的处理预算,不代表 Git 有统一的同等限制。诊断先显示 50 条,可逐批展开;复制和下载 JSON 包含全部已完成的诊断。
替换前预览,替换后可撤销
示例和清空先展示目标内容与前后字符数量,点击应用才修改。一次撤销同时恢复输入、选项与报告状态。候选不承诺语义等价,过长而无法在预算内安全生成时不提供,不会截断后冒充可用名称。

Git 分支名检查常见问题

如何检查 Git 分支名是否合法?

对字面分支名使用分支模式,或在自己的终端中用 git check-ref-format --branch 检查并妥善引用参数。main 和 master 并非语法禁用名;某个团队保护它们,不等于 Git 不允许它们。检查通过也不保证创建操作成功。

Git 分支名能否用中文?

Git 语法允许中文等非 ASCII 字符,只要没有触犯其他规则。本页会将这类情况列为可移植性提醒,不会一概判错。若需要 ASCII 名称,请审阅单独生成的候选;它不会把中文转换成拼音。

为什么 check-ref-format 检查 master 失败,加上 --branch 却通过?

默认命令检查引用名,要求包含斜杠;--branch 检查的是分支命名空间中的简写。请选择与输入含义一致的模式。不要为了满足斜杠要求而随意在末尾补斜杠,因为尾部斜杠同样无效。

Git 的短提交哈希长度是怎么确定的?

Git 会根据仓库对象集合寻找唯一前缀,最小请求长度为 4,默认值受 core.abbrev 配置影响。本页的 7 位只是展示默认值。仓库增加对象后,原本足够的前缀也可能不再唯一。

如何通过 SHA-1 检查某个提交是否存在?

必须查询目标仓库。例如可借助 git cat-file -e 检查相应对象表达式是否存在,是否为提交还需明确类型检查。本页只看字符串;即使 40 位全部是合法十六进制,也不能断言对应某个真实提交。

还有疑问?

带着明确的上下文重新检查

先用 Git 分支名检查解释名称本身的问题,再到目标仓库确认对象存在、前缀唯一性和实际创建权限。