git branch -h 创建了名为“-h”的分支。这是预期的吗?

git branch -h created branch with name '-h'. Is this expected?

如图所示,不确定分支是如何创建的 -h -merged --help

如何删除不需要的分支[/不小心创建的]分支?

更新 文本来自git bash[Windows]

$ git branch -a * calc master –-help –h –merged remotes/origin/master

这些分支可能 命名为 -h-merged 等,而是命名为 –h–merged,等等。仍然很难分辨,但第二组名称的第一个字符是破折号,而不是连字符作为第一个字符。破折号是 Unicode 字符 U+2013.

输入这样一个字符的键盘方法取决于OSand/or键盘and/or其他软件:这里很少有标准。 (在 MacOS 上,我输入它的最简单方法是按住 option 键并按 - 键。 )

要以编程方式处理它,您可以使用Python。例如,在 Python 3:

>>> import subprocess
>>> s = subprocess.check_output('git branch', shell=True).split(b'\n')

打印 s 中的值现在将分支名称生成为字节字符串列表。在我的例子中,在创建一个名为 –merged 的分支后,其中一个(s[5] 在我的测试存储库中)是:

b'  \xe2\x80\x93merged'

它显示了 en-dash 的 UTF-8 编码序列:

>>> s[5].decode('utf8') == '  \N{en dash}merged'
True
>>> s[5].decode('utf8') == '  \u2013merged'
True

要删除它,我可以再次从 Python 调用 git branch -D

>>> subprocess.check_call('git branch -D \N{en dash}merged', shell=True)
Deleted branch –merged (was 4ede3d42df).
0

(请注意,在 Python 2.7 下,这有点不同,因为内置字符串类型相当于 bytes 类型,而不是 Python 2.7 unicode 类型。)