Eu estava tentando criar uma ramificação master
com o seguinte comando,
git branch SSLOC-201_Implement___str__()_of_ProductSearchQuery
quando Git de repente parou de responder. Suspeito que os não-escapados ()
sejam os culpados, de alguma forma. Agora, sempre que tento executar qualquer comando Git, recebo o mesmo erro:
git:176: command not found: _of_ProductSearchQuery
com o número depois de git
aumentar toda vez que digito um comando.
Alguém pode explicar o que aconteceu? E como eu volto ao normal? Gostaria de excluir esse ramo, mas como posso fazer isso?
git
zsh
git-branch
parentheses
ruipacheco
fonte
fonte
git branch "SSLOC-201_Implement___str__()_of_ProductSearchQuery"
funciona muito bem.Respostas:
Problema
Correndo
no zsh, você não criou nenhum ramo . Em vez disso, você acidentalmente definiu três funções shell , chamados
git
,branch
eSSLOC-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 zshfunctions
incorporado chamado , que lista todas as funções de shell existentes: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
!Portanto, você receberá o erro posteriormente
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
Esse número corresponde simplesmente ao valor de
HISTCMD
, uma variável de ambiente que contémVeja o manual do zsh para mais detalhes.
Solução
Simplesmente exclua a função de shell problemática (e as outras duas que você criou acidentalmente, enquanto faz isso):
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
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
pertencem a mensagens de confirmação, não a nomes de ramificações.
fonte
Switched to a new branch 'abcd-()-foo'
unset
criando a função shell chamada? (isto é possível?)zsh
.builtin unset
. Sebuiltin
eunset
foram sombreados por funções, entãounfunction
. Se isso também se foiunhash -f
. Se todos os quatro se foram, em seguida, reiniciar o shell.