2011-07-06 6 views
8

Je voulais revenir à la dernière validation après avoir fait une erreur massive, mais j'ai réussi à revenir un peu trop juste. Le commit que je voulais réaffirmer n'apparait pas quand j'entre 'git log' dans bash (je suppose que ce n'est plus dans l'historique). Est-il possible de récupérer le dernier commit par date? J'utilise eGit en eclipse pour le même projet si cela facilite les choses. Merci.Comment faire pour annuler une annulation Git

Répondre

21

Si vous êtes ok avec la ligne de commande, vous allez Repo, faire un git reflog et obtenir la validation que vous voulez « rollback » pour et faire un git reset --hard <commit>

Vous aussi pouvoir faire git reset --hard [email protected]{1} puis revenir à egit et revenir au commit souhaité.

+2

Pertinent: [git reflog, votre filet de sécurité] (http://gitready.com/intermediate/2009/02/09/reflog-your-safety-net.html) –

+0

Wonderful! Vous m'avez sauvé beaucoup de travail, merci. – Chironex

2

Je trouve qu'il est généralement préférable de faire avancer vos changements dans le temps plutôt que vers l'arrière.

L'approche de Git est de "rétablir" le commit. Lorsque vous annulez un commit, vous extrayez dans votre répertoire de travail le inverse du commit en question. Ensuite, vous ajoutez et validez cela, et vous venez de faire une NOUVELLE validation, qui valide la "annulation" du commit que vous annulez, ET cela laisse un enregistrement dans l'histoire qu'une telle chose s'est produite, donc si vous voulez annuler votre défaite, c'est facile à faire.

+0

Lorsque vous reconnaissez que vous avez fait quelque chose d'erroné avant que ce soit une partie indélébile de l'histoire (c'est-à-dire partagée avec d'autres), il est préférable de ne pas l'enregistrer. L'enregistrement de mauvais commits signifie que des outils comme "git bisect" ont plus à trébucher. – Novelocrat

+0

Je suppose que c'est vrai. Je trouve que les messages de commit clairs me sauvent de trop de chagrin à cet égard. Et si j'ai besoin de revenir à mon retour (ce que j'ai de temps en temps), il est bon d'avoir là pour revenir. –