我不小心创建了一个本地分支issue-1299è
。当我git branch
时,您可以看到分支。
但是当我git branch -D issue-1299è
时,找不到分支......
围绕这个有什么好的做法吗?
答案 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è
上没有匹配的文件。
所以,这解决了我的问题。
谢谢大家!我真的很感谢你的帮助!