Ich habe versucht, einen Zweig master
mit dem folgenden Befehl zu erstellen :
git branch SSLOC-201_Implement___str__()_of_ProductSearchQuery
als Git plötzlich nicht mehr reagierte. Ich vermute, dass die Unentschlossenen ()
irgendwie schuld sind. Wenn ich jetzt versuche, einen Git-Befehl auszuführen, wird der gleiche Fehler angezeigt:
git:176: command not found: _of_ProductSearchQuery
mit der Zahl nach git
Erhöhung jedes Mal, wenn ich einen Befehl eingebe.
Kann jemand erklären, was passiert ist? Und wie komme ich wieder zur Normalität? Ich möchte diesen Zweig löschen, aber wie kann ich das tun?
git
zsh
git-branch
parentheses
Ruipacheco
quelle
quelle
git branch "SSLOC-201_Implement___str__()_of_ProductSearchQuery"
funktioniert gut.Antworten:
Problem
Durch Laufen
In zsh haben Sie keinen Zweig erstellt . Stattdessen haben Sie versehentlich drei Shell-Funktionen definiert , die als
git
,branch
und bezeichnet werden undSSLOC-201_Implement___str__
deren Parameter (falls vorhanden) ignorieren und deren Körper sich befindet_of_ProductSearchQuery
. Sie können selbst überprüfen, ob dies tatsächlich der Fall ist, indem Sie den eingebauten Befehl zsh aufrufenfunctions
, der alle vorhandenen Shell-Funktionen auflistet:Obwohl die beiden anderen Shell-Funktionen nicht problematisch sind, überschattet die Shell-Funktion "git" jetzt leider den echten
git
Befehl!Daher erhalten Sie anschließend den Fehler
wenn Sie versuchen , einen Git - Befehl auszuführen, zum Beispiel
git log
,git status
usw. (vorausgesetzt natürlich, dass kein Befehl aufgerufen_of_ProductSearchQuery
existiert).Randnotiz
Diese Zahl entspricht einfach dem Wert
HISTCMD
einer Umgebungsvariablen, die giltWeitere Informationen finden Sie im zsh-Handbuch .
Lösung
Löschen Sie einfach die problematische Shell-Funktion (und die beiden anderen, die Sie versehentlich erstellt haben, während Sie gerade dabei sind):
Dann sollte alles in Ordnung sein.
Was ist, wenn auch
unset
Schatten ist?!Gute Frage ! Ich verweise Sie auf Wumpus W. Wumbleys hervorragenden Kommentar unten.
Tipps zur Benennung von Zweigen
Vermeiden Sie spezielle Shell-Zeichen
Ja, wie in den Kommentaren erwähnt, sind Klammern gültige Zeichen in Git-Zweignamen. Sie müssen nur den Namen entsprechend zitieren, z
Die Notwendigkeit, solche Namen jedes Mal in Anführungszeichen zu setzen, wenn sie als Befehlszeilenargumente verwendet werden, sollte Sie jedoch davon überzeugen, Klammern in Referenznamen zu vermeiden. Im Allgemeinen sollten Sie (so weit wie möglich) Zeichen vermeiden, die in Muscheln eine besondere Bedeutung haben, um Überraschungen wie diese zu vermeiden.
Verwenden Sie einfache Filialnamen
Sie sollten Ihre Filialnamen trotzdem kurz und bündig halten. Lange Beschreibungen mögen
gehören in Commit-Nachrichten, nicht in Filialnamen.
quelle
Switched to a new branch 'abcd-()-foo'
unset
indem er eine sogenannte Shell-Funktion erstellt? (zsh
.builtin unset
. Wennbuiltin
undunset
beide durch Funktionen beschattet wurden, dannunfunction
. Wenn das auch weg ist ,unhash -f
. Wenn alle vier davon weg sind, dann starten Sie den Shell.