Unix环境下Git出现<96>d异常分支,如何识别并删除?
解决Git中显示<96>d异常分支的删除问题
嘿,我碰到过类似的坑!你看到的<96>其实是终端没办法正确渲染分支名里的特殊不可打印字符,所以用这个占位符来兜底显示——实际分支名里并不是<96>这几个字符,而是一个终端无法识别的单个特殊字符,后面跟着d。这就是你直接输入<96>d、96d这些写法都找不到分支的核心原因。
下面给你几个靠谱的解决方法:
方法1:用Git底层命令获取真实分支名
Git的一些底层(plumbing)命令不会像git branch那样被终端转义显示,能直接输出分支的原始名字:
git for-each-ref --format='%(refname:short)' refs/heads/
执行这个命令后,你会看到所有本地分支的真实名称,那个异常分支的特殊字符会原样显示(或者呈现其原始编码形态),你可以直接复制这个真实名称,然后用强制删除命令处理:
git branch -D 真实分支名
(这里用-D是强制删除,避免分支未合并时的报错;如果确定分支内容已经合并到主分支,用-d也可以)
方法2:通过分支哈希值删除
如果上面的命令还是看不到真实字符,或者没法复制,可以用分支对应的哈希值来操作:
- 先列出所有分支及其哈希:
git show-ref --heads
输出会是类似这样的格式:
abc1234 refs/heads/main def5678 refs/heads/feature-x ghi9012 refs/heads/<96>d # 这就是那个异常分支
找到对应异常分支的哈希值(比如上面的ghi9012),然后用哈希值强制删除:
git branch -D ghi9012
方法3:用通配符匹配(谨慎使用)
如果你确定只有这个异常分支是以d结尾的,可以用通配符来匹配删除:
git branch -D *d
⚠️ 注意:这个命令会删除所有以d结尾的分支,一定要确认没有其他正常分支符合这个规则再执行!
方法4:直接输入特殊字符(针对已知编码)
如果<96>对应的是十六进制编码为0x96的字符(比如ASCII的破折号),在bash/zsh这类终端里,可以用转义序列直接输入这个字符:
git branch -D $'\x96'd
这个写法里的$'\x96'会被终端解析为十六进制0x96对应的字符,后面加上d就是完整的分支名了。
内容的提问来源于stack exchange,提问作者Bharath K Asrani
相关产品推荐
相关产品推荐

