答案 0 :(得分:0)
您的屏幕截图(我手动重新输入,因此可能会引入各种错误)似乎显示以下内容:
$ git branch
german
* master
newAutosuggest
release-candidate
release_v3.1.2
â<U+0080>-merged
â<U+0080>-no-merged
â<U+0080>-merged
-no-merged
带有 master
的那一行是绿色的(对于当前分支来说是正常的),带有 <U+0080>
的那一行的那部分是反视频打印的,这表明你的寻呼机已经突出显示了这一点,暗示它是不可打印字符的扩展。
â
(Unicode LATIN SMALL LETTER A WITH CIRCUMFLEX,U+00E2)字符和扩展的 U+0080 表示您有使用非 ASCII 字符的分支名称。
名称 â<U+0080>-merged
和 â<U+0080>-merged
在视觉上看起来相同,我将它们输入为两个相同的名称,但这应该是不可能的。在我看来,至少一个明显的连字符 -
字符实际上是一个短划线 –
U+2013 字符。这也可以解释 -no-merged
名称的外观:如果至少前导连字符,也许两个连字符,实际上是短划线字符,而不是连字符,它们将可用作 Git 分支名称。
删除这些名称可能容易也可能困难,这取决于您对 Unicode 的熟悉程度以及对生成正确 Unicode 字节序列的工具的访问权限。这也可能取决于您的操作系统是否确实使用 Unicode。
如果所有其他方法都失败了,请考虑直接“在 Git 背后”工作,就像处理 .git/refs/
目录中的文件和/或单个文件 .git/packed-refs
一样。如果您手动编辑这些打包引用文件,请非常小心:确保您的编辑器没有将所有内容转换为 UTF-16-LE 编码(Microsoft 的最爱),也没有插入无意义的字节订单标记。
请注意,在 Git 背后的其他程序(直接进入存储库并在不询问或通知 Git 的情况下更改内容)可以创建名称包含无效连字符的分支。如果发生了这种情况,修复它的方法是再次回到 Git 背后。