Je vérifie parfois une version précédente du code pour l'examiner ou le tester. J'ai vu des instructions sur la marche à suivre si je souhaite modifier les validations précédentes - mais supposons que je n'apporte aucune modification. Après avoir fait par exemple git checkout HEAD^
, comment puis-je revenir à la pointe de la branche? .. git log
ne me montre plus le SHA du dernier commit.
git
version-control
Leo Alekseyev
la source
la source
git log
phrase de votre question, vous pouvez toujours exécutergit log --all
(ou plus utilement,git log --oneline --graph --all
).Réponses:
Si vous savez que le commit dans lequel vous souhaitez revenir est le chef d'une branche ou est étiqueté, vous pouvez simplement
Vous pouvez également utiliser
git reflog
pour voir les autres validations que votre HEAD (ou toute autre référence) a signalées dans le passé.Modifié pour ajouter:
Dans les versions plus récentes de Git, si vous ne couriez que
git checkout
ou autre chose pour déplacer votreHEAD
fois, vous pouvez également fairepour revenir à l'endroit où il se trouvait avant le dernier paiement. Cela était motivé par l'analogie avec l'idiome du shell
cd -
pour revenir au répertoire de travail dans lequel il se trouvait auparavant.la source
master
n'est pas vraiment une sorte de mot-cléHEAD
. Il s'agit simplement du nom de branche par défaut dans un nouveau référentiel. Vous pouvez exécutergit branch
pour obtenir une liste de branches dans votre référentiel etgit tag -l
pour une liste de balises. De même,origin
est le nom par défaut de la télécommande à partir de laquelle un référentiel est cloné, mais il n'y a rien de spécial à ce sujet.git reflog
vous donne une liste de hachages, à quel moment vous pouvez l'utilisergit checkout [commit-hash]
.git checkout master
master est l'astuce ou le dernier commit. gitk ne vous montrera que où vous vous trouvez dans l'arbre à ce moment-là. git reflog affichera toutes les validations , mais dans ce cas, vous voulez juste l'astuce, alors git checkout master.
la source
git checkout branchname
Je suis tombé sur cette question tout à l'heure et j'ai quelque chose à ajouter
Pour accéder au commit le plus récent:
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 paiementRemarque:
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:
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:
Par exemple, créez l'alias
git top
pour cette commande.la source
alias git-head='git checkout $(git log --branches -1 --pretty=format:"%D" | sed "s/.*, //g")'
Jetez un œil à l'interface graphique ...
gitk
elle montre tous les commits. Parfois, il est plus facile de travailler graphiquement ... ^^la source
Pour cela, vous pouvez utiliser l'une des commandes git suivantes:
la source
afficher toutes les branches et valider
git log --branches --oneline
afficher le dernier journal de git de validation -
branches -1 - en ligne
afficher avant le dernier commit
git log --branches -2 --oneline
la source
la source
Si vous avez une branche différente de master, une méthode simple consiste à extraire cette branche, puis à extraire master. Voila, vous êtes de retour à la pointe du maître. Il y a probablement des moyens plus intelligents ...
la source
Vous pouvez simplement le faire
git pull origin branchname
. Il récupérera à nouveau le dernier commit.la source
Si votre dernier commit est sur la branche master, vous pouvez simplement utiliser
la source