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