Je suis tombé sur cette question tout à l'heure et j'ai quelque chose à ajouter
Pour accéder au commit le plus récent:
git checkout $(git log --branches -1 --pretty=format:"%H")
Explication:
git log --branches
affiche le journal des
-1
validations de toutes les branches locales, limite à une validation →
--pretty=format:"%H"
format de validation le plus récent pour afficher uniquement le hachage de validation,
git checkout $(...)
utilisez la sortie du sous-shell comme argument pour le paiement
Remarque:
Cela se traduira cependant par une tête détachée (car nous passons directement à la validation). Cela peut être évité en extrayant le nom de la branche à l'aide de sed
, expliqué ci-dessous.
Pour accéder à la branche du commit le plus récent:
git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
Explication:
git log --branches
affiche le journal des
-1
validations de toutes les branches locales limite à une validation → le
--pretty=format:"%D"
format de validation le plus récent pour afficher uniquement les noms de référence
| sed 's/.*, //g'
ignore tout sauf la dernière des multiples références (*)
git checkout $(...)
utilise la sortie du sous-shell comme argument pour le paiement
*) Les branches HEAD et distantes sont répertoriées en premier, les branches locales sont répertoriées en dernier par ordre alphabétique décroissant, de sorte que celle qui reste sera le nom de la première branche par ordre alphabétique
Remarque:
Cela n'utilisera toujours le nom de la première branche (par ordre alphabétique) que 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 référence pour le commit le plus récent pour savoir où payer:
git log --branches -1 --pretty=format:'%D'
Par exemple, créez l'alias git top
pour cette commande.
git log
phrase de votre question, vous pouvez toujours exécutergit log --all
(ou plus utilement,git log --oneline --graph --all
).