Próbowałem utworzyć gałąź master
z następującego polecenia,
git branch SSLOC-201_Implement___str__()_of_ProductSearchQuery
kiedy Git nagle przestał odpowiadać. Podejrzewam, że w ()
jakiś sposób winni są nieskrywani . Teraz za każdym razem, gdy próbuję uruchomić dowolne polecenie Git, pojawia się ten sam błąd:
git:176: command not found: _of_ProductSearchQuery
z liczbą git
rosnącą za każdym razem, gdy wpisuję polecenie.
Czy ktoś może wyjaśnić, co się stało? Jak mogę wrócić do normy? Chciałbym usunąć tę gałąź, ale jak mogę to zrobić?
git
zsh
git-branch
parentheses
ruipacheco
źródło
źródło
git branch "SSLOC-201_Implement___str__()_of_ProductSearchQuery"
działa dobrze.Odpowiedzi:
Problem
Biegiem
w Zsh nie utworzyłeś żadnej gałęzi . Zamiast tego przypadkowo zdefiniowałeś trzy funkcje powłoki , nazwane
git
,branch
iSSLOC-201_Implement___str__
, które ignorują ich parametry (jeśli istnieją) i których treść jest_of_ProductSearchQuery
. Możesz sam sprawdzić, czy tak właśnie się stało, wywołując wbudowane polecenie zshfunctions
, które wyświetla wszystkie istniejące funkcje powłoki:Niestety, chociaż pozostałe dwie funkcje powłoki nie są problematyczne, funkcja powłoki o nazwie „git” teraz cienia polecenia bona fide
git
!Dlatego pojawi się błąd
gdy spróbujesz uruchomić polecenie git przykład
git log
,git status
itd (zakładając oczywiście, że ma polecenia o nazwie_of_ProductSearchQuery
istnieje).Dygresja
Liczba ta po prostu odpowiada wartości
HISTCMD
zmiennej środowiskowej, która zawieraWięcej informacji znajduje się w instrukcji obsługi Zsh .
Rozwiązanie
Po prostu usuń problematyczną funkcję powłoki (i dwie pozostałe, które utworzyłeś przypadkowo, gdy jesteś przy niej):
Wtedy wszystko powinno być w porządku.
Co jeśli
unset
jest również śledzony ?!Dobre pytanie ! Odsyłam do wumpusa W. Wumbley wspaniałe komentarzu poniżej.
Wskazówki dotyczące nazewnictwa gałęzi
Unikaj specjalnych znaków powłoki
Tak, jak wskazano w komentarzach, nawiasy są prawidłowymi znakami w nazwach gałęzi Git; wystarczy odpowiednio podać nazwę, np
Jednak potrzeba cytowania takich nazw za każdym razem, gdy są używane jako argumenty wiersza poleceń, powinny przekonać cię do unikania nawiasów w nazwach referencyjnych. Mówiąc bardziej ogólnie, powinieneś (o ile to możliwe) unikać znaków, które mają specjalne znaczenie w muszlach, aby uniknąć takich niespodzianek.
Użyj prostych nazw gałęzi
W każdym razie powinieneś utrzymywać krótkie i słodkie nazwy swoich oddziałów. Długie opisy jak
należą do komunikatów zatwierdzania, a nie do nazw gałęzi.
źródło
Switched to a new branch 'abcd-()-foo'
unset
, tworząc funkcję powłoki tak zwaną? (czy to możliwe?)zsh
.builtin unset
. Jeślibuiltin
iunset
oba zostały zasłonięte przez funkcje, tounfunction
. Jeśli to już teżunhash -f
. Jeśli wszystkie cztery z nich zostaną usunięte, a następnie ponownie uruchom powłokę.