Question Annulation de git reset?


Quel est le moyen le plus simple pour annuler le

git reset HEAD~

commander? Actuellement, la seule façon de penser est de faire un "git clone http: // ..." à partir d'un repo distant.


892
2018-03-24 18:08


origine


Réponses:


Réponse courte:

git reset 'HEAD@{1}'

Longue réponse:

Git conserve un journal de toutes les mises à jour ref (par exemple, checkout, reset, commit, merge). Vous pouvez le voir en tapant:

git reflog

Quelque part dans cette liste est le commit que vous avez perdu. Disons que vous venez de taper git reset HEAD~ et veulent le défaire. Mon reflog ressemble à ceci:

$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]

La première ligne dit que HEAD Il y a 0 positions (en d'autres termes, la position actuelle) est 3f6db14; il a été obtenu en réinitialisant à HEAD~. La deuxième ligne dit que HEAD Il y a 1 position (en d'autres termes, l'état avant la réinitialisation) est d27924e. Il a été obtenu en vérifiant un commit particulier (bien que ce ne soit pas important en ce moment). Donc, pour annuler la réinitialisation, exécutez git reset HEAD@{1} (ou git reset d27924e).

Si, par contre, vous avez exécuté d'autres commandes depuis la mise à jour HEAD, le commit que vous voulez ne sera pas en haut de la liste, et vous devrez chercher dans le reflog.

Une dernière remarque: il peut être plus facile de regarder le reflog pour la branche spécifique que vous souhaitez annuler, dites maître, plutôt que HEAD:

$ git reflog show master
c24138b master@{0}: merge origin/master: Fast-forward
90a2bf9 master@{1}: merge origin/master: Fast-forward
[...]

Cela devrait avoir moins de bruit que le général HEAD reflog.


1682
2018-03-28 03:32



La vieille question, et les réponses affichées fonctionnent très bien. Je vais entrer dans une autre option cependant.

git reset ORIG_HEAD

ORIG_HEAD référence le commit HEAD précédemment référencé.


89
2018-01-25 14:10



Ma situation était légèrement différente, je l'ai fait git reset HEAD~ trois fois.

Pour l'annuler je devais faire

git reset HEAD@{3}

donc vous devriez être capable de faire

git reset HEAD@{N}

Mais si vous avez fait réinitialiser git en utilisant

git reset HEAD~3

tu devras faire

git reset HEAD@{1}

Comme {N} représente le nombre d'opérations dans Reflog. Comme Mark l'a souligné dans les commentaires.


28
2017-08-15 08:38



1.Use git reflog pour mettre à jour toutes les références.

2.git reset <id_of_commit_to_which_you_want_restore>

3 La prochaine fois éviter cela


0
2017-07-05 15:15