Problema
Alguém pode explicar o que aconteceu? [...] eu adoraria poder excluir esse ramo, mas o Git não funcionará para mim.
Correndo
git branch SSLOC-201_Implement___str__()_of_ProductSearchQuery
no zsh, você não criou nenhum ramo . Em vez disso, você acidentalmente definiu três funções shell , chamados git
, branch
e SSLOC-201_Implement___str__
que ignoram os seus parâmetros (se houver) e cujo corpo é _of_ProductSearchQuery
. Você pode verificar por si mesmo que isso foi realmente o que aconteceu, invocando o comando zsh functions
incorporado chamado , que lista todas as funções de shell existentes:
$ functions
SSLOC-201_Implement___str__ () {
_of_ProductSearchQuery
}
branch () {
_of_ProductSearchQuery
}
git () {
_of_ProductSearchQuery
}
Infelizmente, embora as outras duas funções do shell não sejam problemáticas, a função do shell chamada "git" agora obscurece o comando de boa-fé git
!
$ which git
git () {
_of_ProductSearchQuery
}
# but the real "git" is a binary file that lives in /usr/local/bin/git (or some similar path)
Portanto, você receberá o erro posteriormente
command not found: _of_ProductSearchQuery
sempre que você tentar executar um comando Git, por exemplo git log
, git status
etc. (assumindo, é claro, que nenhum comando chamado _of_ProductSearchQuery
exista).
Nota
[...] eu recebo o mesmo erro:
git:176: command not found: _of_ProductSearchQuery
(com o número após git
aumentar sempre que digito um comando)
Esse número corresponde simplesmente ao valor de HISTCMD
, uma variável de ambiente que contém
[o] número do evento do histórico atual em um shell interativo, ou seja, o número do evento para o comando que causou $HISTCMD
a leitura.
Veja o manual do zsh para mais detalhes.
Solução
E como eu volto ao normal?
Simplesmente exclua a função de shell problemática (e as outras duas que você criou acidentalmente, enquanto faz isso):
unset -f git
unset -f branch SSLOC-201_Implement___str__
Então tudo deve ficar bem.
E se unset
também estiver sombreado ?!
Boa pergunta ! Refiro-lhe o excelente comentário de Wumpus W. Wumbley abaixo.
Dicas para nomear filiais
Evite caracteres especiais do shell
Sim, conforme indicado nos comentários, parênteses são caracteres válidos nos nomes de ramificações do Git; você só precisa citar o nome adequadamente, por exemplo
$ git branch 'foo()bar'
$ git branch
foo()bar
* master
$ git checkout 'foo()bar'
Switched to branch 'foo()bar'
No entanto, a necessidade de citar esses nomes sempre que usados como argumentos de linha de comando deve convencê-lo a evitar parênteses nos nomes de referência. De maneira mais geral, você deve (o máximo possível) evitar personagens que tenham um significado especial nas conchas, para evitar surpresas como essa.
Use nomes simples de ramificações
Você deve manter os nomes de suas filiais curtos e agradáveis de qualquer maneira. Descrições longas como
SSLOC-201_Implement ___ str __ () _ of_ProductSearchQuery
pertencem a mensagens de confirmação, não a nomes de ramificações.