Comment débloquer mon dernier commit en Git [dupliquer]

cette question a déjà une réponse ici:

Comment puis-je débloquer mon dernier engagement en git?

Est-il

git reset --hard HEAD

ou

git reset --hard HEAD^

?

642
demandé sur Peter Mortensen 2010-05-17 02:26:31

8 réponses

si vous n'êtes pas tout à fait sûr de ce que vous voulez dire par" uncommit "et ne savez pas si vous voulez utiliser git reset , s'il vous plaît voir " revenir à une précédente git commit ".

Si vous êtes à essayer de comprendre les "151930920 de" mieux voir " Pouvez-vous expliquer ce "git reset" n'en anglais? ".


si vous savez que vous voulez utiliser git reset , cela dépend encore ce que vous dire par "uncommit". Si tout ce que vous voulez faire est d'annuler l'acte de commettre, en laissant tout le reste intact, utilisez:

git reset --soft HEAD^

si vous voulez annuler l'acte de commettre et tout ce que vous avez mis en scène, mais laissez l'arbre de travail (vos fichiers intacts):

git reset HEAD^

et si vous voulez réellement complètement annuler, jeter tous les changements non engagés, Tout réinitialiser à la précédente commettre (comme l'original de la question posée):

git reset --hard HEAD^

la question originale demandait aussi HEAD^ et non HEAD . HEAD se réfère à la commit courante - généralement, la pointe de la branche actuellement cochée. Le ^ est une notation qui peut être attachée à n'importe quel spécificateur de propagation, et signifie"la propagation avant". Ainsi, HEAD^ est le commit avant le l'actuel, tout comme master^ est le commit avant la pointe de la branche principale.

Voici la partie de la git-rev-parse documentation décrivant toutes les façons de spécifier les commits ( ^ est juste un de base parmi beaucoup).

1024
répondu Cascabel 2017-05-23 12:18:27

conserver les modifications à partir de la validation que vous souhaitez annuler

git reset --soft HEAD^

Pour détruire les modifications à partir de la validation que vous souhaitez annuler

git reset --hard HEAD^

vous pouvez aussi dire

git reset --soft HEAD~2

pour revenir 2 s'engage.

Edit: comme charsi l'a mentionné, si vous êtes sur Windows, vous devrez mettre HEAD ou commit hash entre guillemets.

git reset --soft "HEAD^"
git reset --soft "asdf"
237
répondu Alex K 2016-08-18 23:56:54

git reset --soft HEAD^ conservera les modifications dans votre arbre de travail.

git reset --hard HEAD^ VA JETER LES CHANGEMENTS QUE VOUS AVEZ FAIT !!!

167
répondu nfm 2018-01-29 11:41:47

soyez prudent, reset --hard supprimera aussi vos modifications locales (non engagées).

git reset --hard HEAD^

note: si vous êtes sur windows, vous aurez besoin de citer la tête^ so

git reset --hard "HEAD^"
49
répondu tgeros 2016-11-23 13:31:06

juste une note - si vous utilisez ZSH et voir l'erreur

zsh: no matches found: HEAD^

vous devez échapper à la ^

git reset --soft HEAD\^
22
répondu dax 2013-09-12 12:54:24

si vous n'avez pas encore poussé vos modifications, utilisez git reset --soft [Hash for one commit] pour revenir à un commit spécifique. --soft dit à git de garder les changements étant reconduits (i.e., marquer les fichiers tels que modifiés). --hard dit à git de supprimer les modifications en cours de révision.

18
répondu Allen Kenney 2014-10-22 21:39:56

si vous vous engagez dans la mauvaise branche

sur la mauvaise branche:

  1. git log -2 vous donne des hachures de 2 dernières propagations, permet de dire $prev et $last
  2. git checkout $prev checkout corriger commettre
  3. git checkout -b new-feature-branch crée une nouvelle branche pour la caractéristique
  4. git cherry-pick $last patchs une branche avec vos modifications

alors vous pouvez suivre une des méthodes suggérées ci-dessus pour supprimer votre propagation de la première branche.

12
répondu splendidthoughts 2015-08-24 12:44:34

faites attention avec ça.

mais vous pouvez utiliser la commande rebase

git rebase -i HEAD~2

A vi s'ouvrira et tout ce que vous avez à faire est de supprimer la ligne avec la propagation. Peut également lire des instructions qui a été montré dans l'édition appropriée @ vi , un couple de choses peuvent être effectuées sur ce mode

1
répondu Filipe 2014-08-12 14:44:29