J'essayais de créer une branche master
avec la commande suivante,
git branch SSLOC-201_Implement___str__()_of_ProductSearchQuery
quand Git a soudainement cessé de répondre. Je soupçonne que les échappés ()
sont à blâmer, en quelque sorte. Maintenant, chaque fois que j'essaie d'exécuter une commande Git, j'obtiens la même erreur:
git:176: command not found: _of_ProductSearchQuery
avec le nombre après avoir git
augmenté chaque fois que je tape une commande.
Quelqu'un peut-il expliquer ce qui s'est passé? Et comment revenir à la normale? Je voudrais supprimer cette branche, mais comment faire?
git
zsh
git-branch
parentheses
ruipacheco
la source
la source
git branch "SSLOC-201_Implement___str__()_of_ProductSearchQuery"
fonctionne très bien.Réponses:
Problème
En exécutant
dans zsh, vous n'avez créé aucune branche . Au lieu de cela, vous avez accidentellement défini trois fonctions shell , appelés
git
,branch
etSSLOC-201_Implement___str__
qui ne tiennent pas compte de leurs paramètres ( le cas échéant) et dont le corps est_of_ProductSearchQuery
. Vous pouvez vérifier par vous-même que c'est bien ce qui s'est passé, en appelant la commande zsh intégrée appeléefunctions
, qui répertorie toutes les fonctions shell existantes:Malheureusement, bien que les deux autres fonctions de shell ne soient pas problématiques, la fonction de shell appelée "git" masque désormais la commande bona fide
git
!Par conséquent, vous obtiendrez ensuite l'erreur
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
n'existe).Note d'accompagnement
Ce nombre correspond simplement à la valeur de
HISTCMD
, une variable d'environnement qui contientVoir le manuel zsh pour plus de détails.
Solution
Supprimez simplement la fonction shell problématique (et les deux autres que vous avez créées par accident pendant que vous y êtes):
Alors tout devrait bien se passer.
Et si elle
unset
est également masquée?!Bonne question ! Je vous renvoie à l'excellent commentaire de Wumpus W. Wumbley ci-dessous.
Conseils pour nommer les succursales
Évitez les caractères spéciaux du shell
Oui, comme indiqué dans les commentaires, les parenthèses sont des caractères valides dans les noms de branche Git; il vous suffit de citer le nom de manière appropriée, par exemple
Cependant, la nécessité de citer ces noms à chaque fois lorsqu'ils sont utilisés comme arguments de ligne de commande devrait vous convaincre d'éviter les parenthèses dans les noms de référence. Plus généralement, vous devriez (autant que possible) éviter les personnages qui ont une signification particulière dans les coquilles, pour éviter des surprises comme celle-ci.
Utilisez des noms de branche simples
Vous devez de toute façon garder vos noms de succursales courts et doux. Des descriptions longues comme
appartiennent aux messages de validation, pas aux noms de branche.
la source
Switched to a new branch 'abcd-()-foo'
unset
crée également des ombres en créant une fonction shell appelée? (est-ce possible?)zsh
.builtin unset
. Sibuiltin
etunset
ont tous deux été masqués par des fonctions, alorsunfunction
. Si cela a disparu aussiunhash -f
. Si les quatre d' entre eux sont partis, puis redémarrer le shell.