Вы разместили изображение, а не копировали и вставляли текст из вашего сеанса bash (я предполагаю, что это был сеанс bash), поэтому очень трудно быть уверенным в этом, но вполне вероятно, что эти ветви не с именем -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.7 unicode
.)