web-dev-qa-db-fra.com

Comment revenir à la version la plus récente dans Git?

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, donc j'ai fait git checkout <previous version hash> et j'ai fait ce que je devais faire.

Maintenant, je veux revenir à la version la plus récente, mais je ne connais pas le hash correspondant. Quand je tape git log, je ne le vois pas.

Comment puis-je faire ceci? En outre, existe-t-il un moyen plus facile de changer de version que de taper des hachages - quelque chose comme "revenir en arrière deux versions" ou "aller au plus récent chronologiquement"?

281
Nathan Long

git checkout master devrait faire l'affaire. Pour revenir en arrière sur deux versions, vous pouvez dire quelque chose comme git checkout HEAD~2, mais il est préférable de créer une branche temporaire basée à ce moment-là, donc git checkout -b temp_branch HEAD~2

342
Paul Betts

Lorsque vous utilisez un commit spécifique, git crée une branche détachée. Donc, si vous appelez:

$ git branch 

Vous verrez quelque chose comme:

* (detached from 3i4j25)
  master
  other_branch

Pour revenir à la tête de la branche principale, il vous suffit de passer à la caisse de votre branche principale:

$ git checkout master

Cette commande supprimera automatiquement la branche détachée.

Si git checkout ne fonctionne pas, vous avez probablement modifié les fichiers en conflit entre les branches. Pour vous empêcher de perdre du code, git vous oblige à traiter ces fichiers. Vous avez trois options:

  1. Cachez vos modifications (vous pourrez les faire apparaître plus tard):

    $ git stash
    
  2. Annulez les modifications en réinitialisant la branche séparée:

    $ git reset --hard
    
  3. Créez une nouvelle branche avec les modifications précédentes et validez-les:

    $ git checkout -b my_new_branch
    $ git add my_file.ext
    $ git commit -m "My cool msg"
    

Après cela vous pouvez revenir à votre branche principale (version la plus récente):

$ git checkout master
49
Thomio

Cela a fait le tour pour moi (j'étais toujours sur la branche principale):

git reset --hard Origin/master
30
averasko

Vous pouvez vérifier en utilisant les noms de branches, d'une part.

Je sais qu'il y a plusieurs façons de déplacer le HEAD, mais je laisse le soin à un expert génial de les énumérer.

Je voulais juste suggérer gitk --all - Je l’ai trouvé extrêmement utile lorsque je commence avec git.

7
Jay

Pour revenir à la dernière version:

git checkout <branch-name> 

Par exemple, git checkout master ou git checkout dev

6
Reggie Pinkham

Je commence tout juste à creuser plus profondément dans git, je ne suis donc pas sûr de bien comprendre, mais je pense que la bonne réponse à la question du PO est que vous pouvez exécuter git log --all avec une spécification de format comme celle-ci: git log --all --pretty=format:'%h: %s %d' . Ceci marque la version actuelle extraite comme (HEAD) et vous pouvez simplement extraire la suivante de la liste.

En passant, ajoutez un alias comme celui-ci à votre .gitconfig avec un format légèrement meilleur et vous pouvez exécuter git hist --all:

  hist = log --pretty=format:\"%h %ai | %s%d [%an]\" --graph

En ce qui concerne les versions relatives, j'ai trouvé ceci post , mais il ne parle que des versions plus anciennes, il n'y a probablement rien pour faire référence aux versions les plus récentes.

6
haridsv

Certaines des réponses ici supposent que vous êtes sur une branche principale avant de décider de valider un commit plus ancien. Ce n'est pas toujours le cas.

git checkout -

Vous ramènera à la branche sur laquelle vous vous trouviez précédemment (peu importe si elle était maîtresse ou non).

4
Itai Noam

Lorsque vous revenez à une version précédente,

$ git checkout HEAD~2
Previous HEAD position was 363a8d7... Fixed a bug #32

Vous pouvez voir votre journal des fonctionnalités (hash) avec cette commande même dans cette situation;

$ git log master --oneline -5
4b5f9c2 Fixed a bug #34
9820632 Fixed a bug #33
...

master peut être remplacé par un autre nom de branche.

Ensuite, vérifiez-le, vous pourrez revenir à la fonctionnalité.

$ git checkout 4b5f9c2
HEAD is now at 4b5f9c2... Fixed a bug #34
2
kujiy

Une solution plus élégante et simple consiste à utiliser

git stash

Il reviendra à la version locale la plus récente de la branche et enregistrera également vos modifications dans stash. Si vous souhaitez annuler cette action, procédez comme suit:

git stash apply
0
Ilya Gazman