Comment revenir au dernier commit après avoir validé un commit précédent?

Je vérifie parfois une version précédente du code pour examiner ou tester. J’ai vu des instructions sur ce qu’il faut faire si je souhaite modifier les commits précédents – mais supposons que je ne fasse aucun changement. Après avoir fait, par exemple, la git checkout HEAD^ , comment puis-je revenir au bout de la twig? .. git log ne me montre plus le SHA du dernier commit.

Si vous savez que le commit auquel vous voulez retourner est la tête d’une twig, ou est marqué, vous pouvez simplement

 git checkout branchname 

Vous pouvez également utiliser git reflog pour voir les autres commits git reflog votre HEAD (ou toute autre référence) a fait référence dans le passé.


Edité pour append:

Dans les nouvelles versions de Git, si vous ne lancez 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 se trouvait avant la dernière caisse. Cela a été motivé par l’analogie avec le cd - identification de shell cd - pour revenir au répertoire de travail dans lequel on se trouvait auparavant.

git checkout master

master est la pointe, ou le dernier commit. gitk ne vous montrera qu’à l’endroit où vous vous trouvez dans l’arbre. git reflog affichera tous les commits, mais dans ce cas, vous ne voulez que le tip, alors git checkout master.

Je suis venu à travers cette question tout à l’heure et avoir quelque chose à append

Pour accéder à la dernière validation:

 git checkout $(git log --twigs -1 --pretty=format:"%H") 

Explication:

git log --twigs affiche le journal des commits de toutes les twigs locales
-1 limite à une validation → validation la plus récente
--pretty=format:"%H" pour afficher uniquement le hash de validation
git checkout $(...) utilise la sortie du sous-shell comme argument pour la vérification

Remarque:

Cela se traduira par une tête détachée (parce que nous passons directement à la validation). Cela peut être évité en extrayant le nom de la twig en utilisant sed , expliqué ci-dessous.


Pour accéder à la twig du dernier engagement:

 git checkout $(git log --twigs -1 --pretty=format:'%D' |sed 's/HEAD -> \|tag: [^,]*\|,.*//g') 

Explication:

git log --twigs affiche le journal des commits de toutes les twigs locales
-1 limite à une validation → validation la plus récente
--pretty=format:"%D" pour afficher uniquement les noms de ref
|sed 's/HEAD -> \|tag: [^,]*\|,.*//g' ignore HEAD, marque et extrait le premier de plusieurs noms de twig
git checkout $(...) utilise la sortie du sous-shell comme argument pour la vérification

Remarque:

Cela n’utilisera toujours que le nom de la première twig s’il y en a plusieurs pour ce commit.


Quoi qu’il en soit, je pense que la meilleure solution consisterait simplement à afficher les noms de référence pour l’engagement le plus récent afin de savoir où commander pour:

 git log --twigs -1 --pretty=format:'%D' 

Par exemple, créez l’alias git top pour cette commande.

Jetez un coup d’oeil à l’interface graphique … gitk 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 

Si votre dernier commit est sur la twig master, vous pouvez simplement utiliser

 git checkout master