Encontré esta pregunta hace un momento y tengo algo que agregar
Para ir a la confirmación más reciente:
git checkout $(git log --branches -1 --pretty=format:"%H")
Explicación:
git log --branches
muestra el registro de confirmaciones de todas las sucursales locales,
-1
limita a una confirmación → el
--pretty=format:"%H"
formato de confirmación más reciente para mostrar solo la
git checkout $(...)
salida de uso de hash de confirmación de subshell como argumento para el pago
Nota:
Sin embargo, esto dará como resultado una cabeza separada (porque pagamos directamente al commit). Esto se puede evitar extrayendo el nombre de la rama utilizando sed
, como se explica a continuación.
Para ir a la rama de la confirmación más reciente:
git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
Explicación:
git log --branches
muestra el registro de confirmaciones de todas las ramas locales,
-1
limita a una confirmación → el
--pretty=format:"%D"
formato de confirmación más reciente para mostrar solo los nombres de referencia
| sed 's/.*, //g'
ignora todas menos las últimas referencias (*)
git checkout $(...)
usa la salida de la subshell como argumento para el pago
*) HEAD y las ramas remotas se enumeran primero, las ramas locales se enumeran en último lugar en orden alfabético descendente, por lo que el restante será el primer nombre de la rama alfabéticamente
Nota:
Esto siempre usará el nombre de la primera rama (alfabéticamente) si hay múltiples para esa confirmación.
De todos modos, creo que la mejor solución sería mostrar los nombres de referencia para la confirmación más reciente para saber dónde realizar el pago:
git log --branches -1 --pretty=format:'%D'
Por ejemplo, cree el alias git top
para ese comando.
git log
oración de su pregunta, siempre puede ejecutargit log --all
(o más útilmentegit log --oneline --graph --all
).