Je suis récemment passé de SVN à Git et je suis un peu confus à propos de quelque chose. J'avais besoin d'exécuter la version précédente d'un script via un débogueur, j'ai donc fait git checkout <previous version hash>
et fait ce que je devais faire.
Maintenant, je veux revenir à la dernière version, mais je ne connais pas le hachage pour cela. Quand je tape git log
, je ne le vois pas.
Comment puis-je faire ceci? De plus, y a-t-il un moyen plus facile de changer de version qu'en tapant des hachages - quelque chose comme "revenir en arrière deux versions" ou "aller à la plus récente chronologiquement"?
la source
git checkout master
c'est exactement comme ça que je reviens d'une branche. Cela signifie-t-il que lorsque je vérifie une version précédente, je crée essentiellement une branche?git log
qu'il s'affichera par rapport à ce point? Et lorsque je passe à la caisse principale, je déplace le pointeur vers la dernière version de la branche principale?git checkout
est un moyen de déplacer la tête. Lorsque vous avez détaché HEAD, vous avez indiqué directement le commit donné; lorsque vous extrayez à nouveau le masque, il renvoie au masque. (Et beaucoup de commandes commegit log
prennent en fait une plage de révision, qui est par défaut HEAD.)Lorsque vous extrayez un commit spécifique, git crée une branche détachée. Donc, si vous appelez:
Vous verrez quelque chose comme:
Pour revenir à la tête de la branche principale, il vous suffit de passer à nouveau à votre branche principale:
Cette commande supprimera automatiquement la branche détachée.
Si
git checkout
cela ne fonctionne pas, vous avez probablement modifié des fichiers en conflit entre les branches. Pour vous empêcher de perdre du code, git vous oblige à gérer ces fichiers. Vous avez trois options:Cachez vos modifications (vous pouvez les faire apparaître plus tard):
Ignorez les modifications réinitialisant la branche détachée:
Créez une nouvelle branche avec les modifications précédentes et validez-les:
Après cela, vous pouvez revenir à votre branche principale (version la plus récente):
la source
Cela a fait l'affaire pour moi (j'étais toujours sur la branche master):
la source
Pour revenir à la dernière version:
Par exemple,
git checkout master
ougit checkout dev
la source
Vous pouvez vérifier en utilisant des noms de branche, pour une chose.
Je sais qu'il existe plusieurs façons de déplacer la tête, mais je laisse le soin à un expert git de les énumérer.
Je voulais juste suggérer
gitk --all
- je l'ai trouvé extrêmement utile lors du démarrage avec git.la source
Je commence juste à creuser plus profondément dans git, donc je ne sais si je comprends bien, mais je pense que la bonne réponse à la question de l'OP est que vous pouvez exécuter
git log --all
avec une spécification de format comme ceci:git log --all --pretty=format:'%h: %s %d'
. Cela marque la version en cours d'extraction(HEAD)
et vous pouvez simplement saisir la suivante dans la liste.BTW, ajoutez un alias comme celui-ci
.gitconfig
avec un format légèrement meilleur et vous pouvez exécutergit hist --all
:En ce qui concerne les versions relatives, j'ai trouvé ce post , mais il ne parle que des versions plus anciennes, il n'y a probablement rien à faire référence aux versions plus récentes.
la source
Certaines des réponses ici supposent que vous êtes sur la branche principale avant de décider de retirer un ancien commit. Ce n'est pas toujours le cas.
Vous ramènera à la branche sur laquelle vous étiez précédemment (qu'elle soit maître ou non).
la source
git checkout hash2
aprèsgit checkout hash1
,git checkout -
vous ramènera àhash1
.Lorsque vous revenez à une version précédente,
Vous pouvez voir votre journal des fonctionnalités (hachage) avec cette commande même dans cette situation;
master
peut être remplacé par un autre nom de branche.Ensuite, vérifiez-le, vous pourrez revenir à la fonctionnalité.
la source
Avec Git 2.23+ (août 2019), la meilleure pratique serait d'utiliser à la
git switch
place de la commande déroutantegit checkout
.Pour créer une nouvelle branche basée sur une ancienne version:
Pour revenir à la branche maître actuelle:
la source
Une solution plus élégante et simple consiste à utiliser
Il reviendra à la version locale la plus rancunière de la branche et enregistrera également vos modifications dans la cachette, donc si vous souhaitez annuler cette action, faites:
la source