Я пытался создать ветку master
с помощью следующей команды:
git branch SSLOC-201_Implement___str__()_of_ProductSearchQuery
когда Git внезапно перестал отвечать. Я подозреваю, что ()
как-то виноваты не спасшиеся. Теперь, когда я пытаюсь запустить любую команду Git, я получаю ту же ошибку:
git:176: command not found: _of_ProductSearchQuery
с числом после git
увеличения каждый раз, когда я набираю команду.
Кто-нибудь может объяснить, что случилось? И как мне вернуться к нормальной жизни? Я хотел бы удалить эту ветку, но как я могу это сделать?
git
zsh
git-branch
parentheses
ruipacheco
источник
источник
git branch "SSLOC-201_Implement___str__()_of_ProductSearchQuery"
работает просто отлично.Ответы:
проблема
Запустив
в zsh вы не создали ни одной ветки . Вместо этого вы случайно определили три функции оболочки , называемые
git
,branch
иSSLOC-201_Implement___str__
, которые игнорируют их параметры (если есть) и чье тело_of_ProductSearchQuery
. Вы можете сами убедиться, что это действительно так, вызвав встроенную команду zshfunctions
, которая перечисляет все существующие функции оболочки:К сожалению, хотя две другие функции оболочки не являются проблематичными, функция оболочки под названием «git» теперь затеняет команду bona fide
git
!Следовательно, впоследствии вы получите ошибку
всякий раз, когда вы пытаетесь запустить команду Git, например
git log
,git status
и т. д. (при условии, конечно, что вызываемая команда не_of_ProductSearchQuery
существует).Примечание
Это число просто соответствует значению
HISTCMD
переменной среды, которая содержитСмотрите руководство zsh для более подробной информации.
Решение
Просто удалите проблемную функцию оболочки (и две другие, которые вы создали случайно, пока вы у нее):
Тогда все должно быть хорошо.
Что если
unset
также затенено ?!Хороший вопрос ! Я отсылаю вас к превосходному комментарию Wumpus W. Wumbley ниже.
Советы по наименованию филиалов
Избегайте каких-либо специальных символов оболочки
Да, как указано в комментариях, круглые скобки являются допустимыми символами в именах веток Git; вам просто нужно правильно указать имя, например
Однако необходимость указывать такие имена каждый раз, когда они используются в качестве аргументов командной строки, должна убедить вас отказаться от скобок в ссылочных именах. В более общем смысле, вы должны (насколько это возможно) избегать символов, которые имеют особое значение в оболочках, чтобы предотвратить подобные сюрпризы.
Используйте простые имена веток
В любом случае, вы должны держать названия своих филиалов короткими и приятными. Длинные описания как
принадлежат сообщениям фиксации, а не именам веток.
источник
Switched to a new branch 'abcd-()-foo'
unset
создание так называемой функции оболочки? (возможно ли это?)zsh
.builtin unset
. Еслиbuiltin
иunset
оба были затенены функциями, тоunfunction
. Если и этого не былоunhash -f
. Если все четыре из них ушли, а затем перезапустить оболочку.