Наткнулся на этот вопрос только сейчас и есть что добавить
Чтобы перейти на самый последний коммит:
git checkout $(git log --branches -1 --pretty=format:"%H")
Объяснение:
git log --branchesпоказывает журнал коммитов из всех локальных веток с
-1ограничением до одного коммита → самый последний
--pretty=format:"%H"формат коммита , чтобы показать только хеш коммита,
git checkout $(...)использующий вывод subshell в качестве аргумента для извлечения
Замечания:
Это приведет к отстраненной голове (потому что мы обращаемся непосредственно к коммиту). Этого можно избежать, извлекая название ветви с помощью sed, объясненного ниже.
Чтобы перейти на ветку самого последнего коммита:
git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
Объяснение:
git log --branchesпоказывает журнал коммитов из всех локальных веток с
-1ограничением до одного коммита → последний
--pretty=format:"%D"формат коммитов , чтобы показывать только имена ссылок,
| sed 's/.*, //g'игнорировать все, кроме последнего из нескольких ссылок (*),
git checkout $(...)использовать вывод subshell в качестве аргумента для извлечения
*) HEAD и удаленные ветви отображаются первыми, локальные ветви располагаются последними в алфавитном порядке по убыванию, поэтому оставшаяся часть будет в алфавитном порядке по имени первой ветви.
Замечания:
Это всегда будет использовать (в алфавитном порядке) имя первой ветви, если есть несколько для этого коммита.
В любом случае, я думаю, что лучшим решением будет просто отобразить имена ссылок для самого последнего коммита, чтобы знать, где оформить заказ:
git log --branches -1 --pretty=format:'%D'
Например, создайте псевдоним git topдля этой команды.
git logпредложения вашего вопроса, вы всегда можете запуститьgit log --all(или более полезно,git log --oneline --graph --all).