Estaba tratando de crear una rama master
con el siguiente comando,
git branch SSLOC-201_Implement___str__()_of_ProductSearchQuery
cuando Git de repente dejó de responder. Sospecho que los no escapados ()
tienen la culpa, de alguna manera. Ahora, cada vez que intento ejecutar cualquier comando de Git, aparece el mismo error:
git:176: command not found: _of_ProductSearchQuery
con el número después de git
aumentar cada vez que escribo un comando.
¿Alguien puede explicar lo que pasó? ¿Y cómo vuelvo a la normalidad? Me gustaría eliminar esa rama, pero ¿cómo puedo hacer eso?
git
zsh
git-branch
parentheses
ruipacheco
fuente
fuente
git branch "SSLOC-201_Implement___str__()_of_ProductSearchQuery"
funciona bienRespuestas:
Problema
Mediante la ejecución
en zsh, no creaste ninguna rama . En su lugar, definió accidentalmente tres funciones de shell , llamadas
git
,branch
ySSLOC-201_Implement___str__
, que ignoran sus parámetros (si los hay) y de quién es el cuerpo_of_ProductSearchQuery
. Puede verificar por sí mismo que esto es lo que sucedió, invocando el comando incorporado zsh llamadofunctions
, que enumera todas las funciones de shell existentes:Desafortunadamente, aunque las otras dos funciones de shell no son problemáticas, la función de shell llamada "git" ahora oculta el comando de buena fe
git
.Por lo tanto, posteriormente recibirá el error
cada vez que intente ejecutar un comando Git, por ejemplo
git log
,git status
etc. (suponiendo, por supuesto, que no_of_ProductSearchQuery
existe ningún comando llamado ).Nota al margen
Ese número simplemente corresponde al valor de
HISTCMD
, una variable de entorno que contieneConsulte el manual de zsh para más detalles.
Solución
Simplemente elimine la función de shell problemática (y las otras dos que creó por accidente, mientras está en ello):
Entonces todo debería estar bien.
¿Y si
unset
también está sombreado?Buena pregunta ! Os remito al excelente comentario de Wumpus W. Wumbley a continuación.
Consejos para nombrar sucursales
Evita los caracteres especiales de shell
Sí, como se señala en los comentarios, los paréntesis son caracteres válidos en los nombres de rama de Git; solo necesita citar el nombre apropiadamente, ej.
Sin embargo, la necesidad de citar dichos nombres cada vez que se usan como argumentos de línea de comandos debería convencerlo de que evite los paréntesis en los nombres de referencia. En términos más generales, debe (tanto como sea posible) evitar los personajes que tienen un significado especial en las conchas, para evitar sorpresas como esta.
Use nombres de rama simples
Debes mantener los nombres de tus sucursales cortos y dulces de todos modos. Descripciones largas como
pertenecer a mensajes de confirmación, no a nombres de sucursal.
fuente
Switched to a new branch 'abcd-()-foo'
unset
creando la llamada función de shell? (¿es esto posible?)zsh
.builtin unset
. Sibuiltin
yunset
ambos han sido sombreados por funciones, entoncesunfunction
. Si eso se ha ido tambiénunhash -f
. Si los cuatro de los que se han ido, a continuación, reinicie la cáscara.