在branchname中找不到/删除带有“è”的本地分支

时间:2018-01-19 13:50:38

标签: git

我不小心创建了一个本地分支issue-1299è。当我git branch时,您可以看到分支。

enter image description here

但是当我git branch -D issue-1299è时,找不到分支......

enter image description here

围绕这个有什么好的做法吗?

3 个答案:

答案 0 :(得分:1)

字符显示为带有GRAVE的LATIN SMALL LETTER E(参见http://www.fileformat.info/info/unicode/char/e8/index.htm)。但是,有多种方法可以对此字符进行编码。即使您使用的是UTF-8,它也可能表示为U + 00C8,或者表示为分解形式,LATIN SMALL LETTER E U + 0065,然后是COMBINING GRAVE ACCENT U + 0300(参见链接Unicode页面。)

Git本身并不知道这一切,只是处理字节字符串。如果你键入两个字节字符串中的一个,当实际编码使用另一个时,显示为è,Git将找不到你输入的字符串。(这个特殊问题很烦人且很困难,并不仅限于Git。)

您可以使用git for-each-ref迭代所有引用,以编程方式获取其字节码字符串,然后使用它来删除要删除的字节编码字符串。 Igor's answer虽然简单,但可能已经足够了。

答案 1 :(得分:0)

如果您使用的是Linux,并且这是唯一一个名称以“issue-1299”开头的分支,您可以尝试以下命令。

git branch -D `git branch | LC_ALL=C grep 'issue-1299.*'`

它将找到名称以“issue-1299”开头的分支并删除它。

答案 2 :(得分:0)

我删除了文件refs/heads/issue-1299è中的参考.git/packed-refs

路径refs/heads/issue-1299è上没有匹配的文件。

所以,这解决了我的问题。

谢谢大家!我真的很感谢你的帮助!