Natrafiłem na to pytanie już teraz i mam coś do dodania
Aby przejść do ostatniego zatwierdzenia:
git checkout $(git log --branches -1 --pretty=format:"%H")
Wyjaśnienie:
git log --branches
pokazuje dziennik zatwierdzeń ze wszystkich lokalnych oddziałów
-1
limit do jednego zatwierdzenia → najnowszy
--pretty=format:"%H"
format zatwierdzenia , aby pokazać tylko hash zatwierdzenia,
git checkout $(...)
użyj danych wyjściowych podpowłoki jako argumentu do kasy
Uwaga:
Spowoduje to jednak odłączenie głowy (ponieważ kasujemy bezpośrednio do zatwierdzenia). Można tego uniknąć, wyodrębniając nazwę gałęzi za pomocą sed
, wyjaśnionego poniżej.
Aby przejść do gałęzi ostatniego zatwierdzenia:
git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
Wyjaśnienie:
git log --branches
pokazuje dziennik zatwierdzeń ze wszystkich lokalnych oddziałów
-1
ograniczenie do jednego zatwierdzenia → najnowszy
--pretty=format:"%D"
format zatwierdzenia , aby pokazać tylko nazwy referencji
| sed 's/.*, //g'
ignoruj wszystkie oprócz ostatniego z wielu referencji (*)
git checkout $(...)
użyj danych wyjściowych podpowłoki jako argumentu do kasy
*) HEAD i gałęzie zdalne są wymienione jako pierwsze, gałęzie lokalne są wymienione jako ostatnie w kolejności malejącej alfabetycznie, więc pozostała będzie alfabetycznie nazwa pierwszego oddziału
Uwaga:
To zawsze użyje (alfabetycznie) pierwszej gałęzi tylko wtedy, gdy istnieje wiele dla tego zatwierdzenia.
W każdym razie, myślę, że najlepszym rozwiązaniem byłoby wyświetlenie nazw referencji dla ostatniego zatwierdzenia, aby wiedzieć, gdzie sprawdzić:
git log --branches -1 --pretty=format:'%D'
Np. Utwórz alias git top
dla tego polecenia.
git log
zdanie twojego pytania, zawsze możesz biegaćgit log --all
(lub bardziej pożyteczniegit log --oneline --graph --all
).