Je vérifie parfois une version précédente du code à examiner ou à tester. J'ai vu des instructions sur la marche à suivre si je souhaite modifier les commits précédents - mais supposons que je ne fasse aucun changement. Après avoir terminé, par exemple git checkout HEAD^
, comment puis-je revenir au sommet de la branche? .. git log
ne me montre plus le SHA du dernier commit.
Si vous savez que le commit sur lequel vous souhaitez retourner est la tête d’une branche ou est marqué, alors vous pouvez simplement
git checkout branchname
Vous pouvez également utiliser git reflog
pour voir les autres commits que votre HEAD (ou toute autre référence) a pointés dans le passé.
Édité pour ajouter:
Dans les versions plus récentes de Git, si vous n'avez exécuté que git checkout
ou autre chose pour déplacer votre HEAD
une fois, vous pouvez également le faire.
git checkout -
pour revenir à l'endroit où il était avant la dernière commande. Cela a été motivé par l'analogie avec l'idiome de shell cd -
pour revenir au répertoire de travail dans lequel il se trouvait auparavant.
git checkout master
master est la pointe, ou le dernier commit. gitk ne vous montrera que votre position actuelle dans l’arbre. git reflog affichera tous les commits, mais dans ce cas, vous voulez juste le conseil, alors git checkout master.
Je suis tombé sur cette question tout à l'heure 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
affiche le journal des commits de toutes les branches locales-1
limite à un commit → dernier commit
Format .____--pretty=format:"%H"
pour afficher uniquement le hachage de validationgit checkout $(...)
utilise la sortie du sous-shell comme argument de sortie
Remarque:
Cela entraînera cependant un détachement de la tête (car nous passons directement à la validation). Cela peut être évité en extrayant le nom de la branche en utilisant sed
, expliqué ci-dessous.
Pour aller à la branche du plus récent commit:
git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
Explication:
git log --branches
affiche le journal des commits de toutes les branches locales-1
limite à un commit → dernier commit--pretty=format:"%D"
format pour afficher uniquement les noms de référence| sed 's/.*, //g'
ignore tout sauf le dernier des multiples refs (*)git checkout $(...)
utilise la sortie du sous-shell comme argument de sortie
*) HEAD et les branches distantes sont listés en premier, les branches locales sont listées en dernier par ordre alphabétique décroissant, ainsi celui qui reste sera le nom alphabétique de la première branche
Remarque:
Cela utilisera toujours uniquement le nom de la première branche (par ordre alphabétique) s'il y en a plusieurs pour cette validation.
Quoi qu’il en soit, je pense que la meilleure solution serait simplement d’afficher les noms des références pour le dernier engagement, afin de savoir où acheter:
git log --branches -1 --pretty=format:'%D'
Par exemple. créez l'alias git top
pour cette commande.
Jetez un coup d'œil à l'interface graphique ... gitk
, elle montre tous les commits. Parfois, il est plus facile de travailler graphiquement ... ^^
Vous pouvez utiliser l'une des commandes git suivantes pour cela:
git checkout master
git checkout branchname
afficher toutes les branches et commettre
git log --branches --oneline
afficher le dernier commit
git log --branches -1 --oneline
montrer avant le dernier commit
git log --branches -2 --oneline
Si vous avez une branche différente de celle du maître, un moyen simple est de vérifier cette branche, puis de vérifier maître. Voilà, vous êtes de retour à la pointe du maître. Il y a probablement des moyens plus intelligents ...
git reflog //find the hash of the commit that you want to checkout
git checkout <commit number>>