Je viens de tomber sur cette question et j'ai quelque chose à ajouter.
Pour aller au commit le plus récent :
git checkout $(git log --branches -1 --pretty=format:"%H")
Explication :
git log --branches
montre le journal des commits de toutes les branches locales
-1
limiter à un seul commit → le commit le plus récent
--pretty=format:"%H"
format pour ne montrer que le hash de commit
git checkout $(...)
utiliser la sortie du sous-shell comme argument pour le checkout
Note :
Il en résultera cependant une tête détachée (parce que nous faisons un checkout directement sur le commit). Ceci peut être évité en extrayant le nom de la branche en utilisant sed
expliqué ci-dessous.
Pour aller à la branche du commit le plus récent :
git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
Explication :
git log --branches
montre le journal des commits de toutes les branches locales
-1
limiter à un seul commit → le commit le plus récent
--pretty=format:"%D"
format pour ne montrer que les noms de réf.
| sed 's/.*, //g'
ignorer tout sauf la dernière des multiples références (*)
git checkout $(...)
utiliser la sortie du sous-shell comme argument pour le checkout
*) HEAD et les branches distantes sont listées en premier, les branches locales sont listées en dernier dans l'ordre alphabétique décroissant, donc celle qui reste sera le nom de la branche en premier dans l'ordre alphabétique.
Note :
Cela utilisera toujours le premier nom de branche (par ordre alphabétique) s'il y en a plusieurs pour ce commit.
Quoi qu'il en soit, je pense que la meilleure solution serait simplement d'afficher les noms de ref pour le commit le plus récent pour savoir où aller :
git log --branches -1 --pretty=format:'%D'
Par exemple, créez l'alias git top
pour cette commande.
15 votes
En ce qui concerne le
git log
de votre question, vous pouvez toujours exécutergit log --all
(ou plus utilement,git log --oneline --graph --all
).0 votes
En développant le commentaire de @Wildcard, vous pouvez créer un merveilleux alias à partir de cela.
git log
commandement : git adog