Tak jakby chciałem odpowiednikiem cd -
git. Jeśli jestem w oddziale master
i kasę foo
, chciałbym móc napisać coś takiego, jak git checkout -
wrócić master
i móc wpisać go ponownie, aby wrócić do foo
.
Czy coś takiego istnieje? Czy byłoby trudne do wdrożenia?
git
git-checkout
Matt Briggs
źródło
źródło
gc-
czy był to skrótgit checkout -
Odpowiedzi:
Z informacji o wersji 1.6.2
i
źródło
error: pathspec '@-' did not match any file(s) known to git. error: pathspec '@1' did not match any file(s) known to git.
@{u}
, który jest odgałęzieniem obecnego oddziału. Jest to bardzo przydatne np. W przypadkugit log @{u}..
list, które nie zostały jeszcze pobrane. I odwrotność,git log ..@{u}
która jest tylko lokalnymi zobowiązaniami, które nie zostały jeszcze wprowadzone.Najprostszym sposobem na zrobienie tego w dzisiejszych czasach jest:
... który jest aliasem:
Jeśli chcesz dowiedzieć się więcej na ten temat, napisałem cały artykuł na ten temat tutaj: Kasa Poprzedni oddział w Git .
źródło
for i in{1..10}; do git rev-parse --symbolic-full-name @{-$i}; done
git reflog | ? { $_ -match ': checkout: moving from (.*) to (.*)'} | % { $Matches[1] }
. W bash musisz napisać coś równoważnego (pobierz ponownie log i przefiltruj do wierszy zawierających ciąg „: checkout:”, a następnie wyodrębnij nazwę gałęzi). To właśnie robi gitJak wskazuje @Karl iz
git checkout
instrukcji:Oba
git checkout -
igit checkout @{-1}
działałyby w tym przypadkuNajbliżej uważam, że używagit reflog
i analizuje najnowszemoving from branch1 to branch2
igit checkout branch1
źródło
Wystarczy dodać więcej szczegółów do poprzednich odpowiedzi, aby zrozumieć mechanizm
git checkout @{-N}
działania. Przechodzi do dziennika, aby sprawdzić historię kasy, więc jeśli chcesz samodzielnie zaimplementować coś podobnego, powinieneś być w stanie przeanalizować wynikigit reflog
wyszukiwaniacheckout:
linii. Możesz sprawdzić implementację w źródle gitsha1_name.c
, w szczególności funkcjęinterpret_nth_prior_checkout
.źródło
Wersja Git
2.23
wprowadziłagit switch
polecenie, którego możesz użyć do tego (i więcej). Cytując oficjalną dokumentację:W konkretnym przypadku możesz poprosić
git switch -
o powrót do oddziału, w którym byłeś wcześniej. Możesz ponownie wykonać to samo polecenie, aby powrócić do pierwszej gałęzi.PS Nie jest tak, że nie wiesz, jak to zrobić (mam na myśli, że minęło 7 lat, odkąd zadałeś to pytanie), ale to polecenie jest mniej mylące i przyjazne dla początkujących, ponieważ rozwiązuje powszechne zamieszanie, które pojawia się podczas korzystania
git checkout
.źródło
Doszedłem do tego pytania z tą samą myślą, aby sprawdzić moją poprzednią gałąź. Używam Ohmyza w
Mac
. Poniższe polecenie pomogło mi.źródło
gco
jako krótki sposób pisaniagit checkout
. Więcgco -
po prostu dzwonigit checkout -
.git checkout -
. zaktualizowano w razie awarii.Najpopularniejszym rozwiązaniem jest:
Gdzie N - liczba kroków gałęzi, aby cofnąć się w historii kasy.
źródło
Oto wskaźniki do części dokumentacji Gita, które opisują
git checkout -
igit checkout @{-1}
rozwiązania podane przez inne odpowiedzi:Podając wersję Git dla dowolnego polecenia,
@{-<n>}
np.@{-1}
Oznacza „ n- ta gałąź / zatwierdzenie wypisana przed bieżącą”. Dokumentacja dlagit checkout <branch>
powtórzenia: „Możesz użyć@{-N}
składni, aby odnieść się do N-tego ostatniego rozgałęzienia / zatwierdzenia wypisanego za pomocągit checkout
operacji.”Jako
<branch>
argumentgit checkout
„możesz również podać”-
, który jest synonimem „@{-1}
”. ”źródło