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

时间:2018-10-31 09:15:18

标签: git git-branch

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

Please click here for image showing all branches in local repo

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

更新 来自git bash的文本[Windows]

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

2 个答案:

答案 0 :(得分:1)

您发布了图像,而不是复制并粘贴bash会话中的文本(我假设这是bash会话),因此很难确定这一点,但是这些分支很可能< em>不是命名为-h-merged,依此类推,而是命名为–h–merged,依此类推。仍然很难分辨,但是第二组名称的首字符是一个破折号,而不是连字符。破折号是Unicode字符U + 2013。

用于输入此类字符的键盘方法取决于OS和/或键盘和/或其他软件:此处的标准很少。 (在MacOS上,最简单的输入方法是按住选项键并按-键。)

要以编程方式处理它,可以使用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

要删除它,我可以再次从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类型。)

答案 1 :(得分:0)

我无法解释分支的创建方式,因为Git甚至不让我创建以破折号开头的名称的分支,但这是如何删除它们的方法:

git branch -d -- <branch_name>

如果--以破折号开头,则可以防止Git将您的分支名称解释为选项。

如果Git告诉您分支尚未完全合并,并且您仍要删除它,则将-d替换为-D。但是,如果发生这种情况,我将在删除分支之前检查其内容。如果您偶然创建了分支并且从未对其进行任何操作,则不会发生这种情况。