我使用Git Bash,错误地创建了一个名为-D的分支。 在使用Google搜索后,我尝试了
git branch -d -- -D
获得
error: branch '-D' not found.
我也尝试将其从gitk中删除但没有成功。
另一方面,我注意到如果我从控制台输入git branch
或者我在gitk上显示它,分支名称会改变。例如,分支在控制台中是-D,但在gitk上以奇怪的字符命名。
Branch name obtained with git log
此时我将奇怪的名字从gitk复制/粘贴到控制台,然后我发出了
git branch -d â?"D
没有成功。
但是,我收到了警告消息:“警告:您的控制台字体可能不支持Unicode。如果您在输出中遇到奇怪的字符,请考虑切换到TrueType字体,例如Lucida控制台!”
作为最后一次尝试,我试图从gitk中删除分支,但是我得到一个弹出窗口,上面写着“错误:分支又找不到另一个奇怪的长名称”。
这一次,我无法将弹出框中的又一个奇怪的长名称复制并粘贴到控制台,因为我无法从弹出窗口复制。
答案 0 :(得分:4)
使用引号
扭曲分支名称git branch -D "-D"
如果您在本地拥有该文件,则只需从.git/ref/heads/branch_name
文件夹中删除该文件即可将其删除。
答案 1 :(得分:3)
根据gitk截图判断,分支名称中的连字符不是常规ASCII连字符(ASCII码45),而是编码为UTF-8的Em dash,然后用字符解释(通过gitk)编码Windows-1252(又名“代码页1252”)。
Em dash具有Unicode代码点2014,转换为UTF-8字节序列E2 80 94
。如果您将这三个字节解释为Windows-1252,则会获得三个字符 - (Unicode代码点“带有CIRCUMFLEX的LATIN SMALL LETTER A”,“EURO SIGN”,“RIGHT DOUBLE QUOTATION MARK”) - 这就是gitk显示(显然gitk默认为您系统上的字符编码Windows-1252)。
要删除此分支,您需要在某处抓取Em dash。一种方法是启动Windows Wordpad(或Microsoft Word),然后键入 Alt 0 1 5 1 (您必须使用数字小键盘!)。
进入Em破折号。复制该字符,然后在“D”:
之前将其粘贴到您的git shell中git branch -d'D'
输入,你就完成了: - )。
答案 2 :(得分:0)
使用Git 2.29(2020年第四季度),您现在应该能够delete that branch from gitk
directly,因为它已经学会了处理分支名称中的Unicode字符。
请参见commit e244588的Denton Liu (Denton-L
)(2020年9月10日)。
请参见commit a99bc27的commit f177c49(2019年12月15日)和Роман Донченко (SpecLad
)(2019年11月2日)。
请参见commit 2faa6cd的Johannes Sixt (j6t
)(2020年4月9日)。
请参见commit c1a6345的Eric Huber (echuber2
)(2019年10月15日)。
请参见commit b8b6095的Beat Bolli (bbolli
)(2019年12月12日)。
请参见commit e2b9cb1前的commit e272a77(2020年10月3日)和Junio C Hamano (gitster
)(2020年1月23日)。
请参见commit 6cd8049的Paul Mackerras (paulusmack
)(2020年10月3日)。
请参见commit 113ce12的Stefan Dotterweich (stefandtw
)(2020年2月11日)。
请参见commit d4247e0的Kazuhiro Kato (kkato233
)(2019年12月7日)。
(由Junio C Hamano -- gitster
--在commit 0cf28f6中合并,2020年10月5日)
gitk
:修复分支名称编码错误签名人:加藤和宏
签名人:Paul Mackerras
在“ {
git checkout -b '漢字'
” (man)之后创建带有UTF-8字符的分支后,“gitk
”错误地显示了分支名称,因为它忘记了将从“git show-ref
” (man)命令读取的字节转换为Unicode字符。