Problème
Quelqu'un peut-il expliquer ce qui s'est passé? [...] J'aimerais être en mesure de supprimer cette branche, mais Git de ne pas travailler pour moi.
En exécutant
git branch SSLOC-201_Implement___str__()_of_ProductSearchQuery
en zsh
, vous avez créé aucune branche. Au lieu de cela, vous avez accidentellement défini trois shell fonctions, appelées git
, branch
, et SSLOC-201_Implement___str__
, qui ne tiennent pas compte de leurs paramètres (le cas échéant) et dont le corps est - _of_ProductSearchQuery
.
Malheureusement, bien que les deux autres fonctions d'interpréteur de commandes ne posent pas problème, la fonction shell appelé git
maintenant les ombres de la bonne foi Git git
commande! Comme un résultat, vous sera par la suite obtenir l'erreur
command not found: _of_ProductSearchQuery
chaque fois que vous essayez d'exécuter une commande Git, par exemple, git log
, git status
, etc. (en supposant, bien sûr, qu'aucune commande appelée _of_ProductSearchQuery
existe).
Vous pouvez le vérifier vous-même que c'est en effet ce qui se passe, par la définition des fonctions d'interpréteur de commandes qui ne renvoie pas d'erreur, par ex.
$ git branch f() echo "foo"
$ git
foo
$ branch
foo
$ f
foo
$ git status
foo
[...] J'ai le même message d'erreur:
git:176: command not found: _of_ProductSearchQuery
(avec le nombre suivant le nombre git
augmentant à chaque fois que je tape une commande)
Ce nombre correspond tout simplement à la valeur de HISTCMD
, une variable d'environnement qui contient
[t]il dans l'histoire actuelle numéro d'événement dans un shell interactif, en d'autres termes, le numéro d'événement pour la commande qui a causé $HISTCMD
d'être lu.
Voir l' zsh
manuel pour plus de détails.
Solution
Et comment puis-je revenir à la normale?
Il suffit de supprimer la problématique de la fonction shell (et les deux autres que vous avez créé par accident, pendant que vous y êtes):
unset -f git
unset -f branch SSLOC-201_Implement___str__
Ensuite, tout devrait bien se passer.
Direction générale de nommage des conseils
Éviter toute spéciale shell caractères
Oui, comme l'a souligné dans les commentaires, les parenthèses sont des caractères valides dans Git branch noms; vous avez juste besoin de citer le nom de façon appropriée, par ex.
$ git branch 'foo()bar'
$ git branch
foo()bar
* master
$ git checkout 'foo()bar'
Switched to branch 'foo()bar'
Cependant, vous devez (autant que possible) d'éviter les caractères qui ont une signification particulière dans les coquilles, pour éviter les mauvaises surprises comme celle-ci.
Utiliser de simples noms de branche
Vous devez garder vos noms de branche court et doux de toute façon. Les longues descriptions comme
SSLOC-201_mettre en Œuvre___str__()_of_ProductSearchQuery
appartiennent à des messages de commit, pas dans les noms de branche.