首页 > 解决方案 > git branch -h 创建了名为“-h”的分支。这是预期的吗?

问题描述

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

请单击此处查看显示本地 repo 中所有分支的图像

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

从 git bash [Windows]更新文本

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

标签: gitgit-branch

解决方案


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

输入这种字符的键盘方法取决于操作系统和/或键盘和/或其他软件:这里没有什么标准。(在 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'

它显示了短划线的 UTF-8 编码序列:

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

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

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

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


推荐阅读