Comment annuler ma dernière validation en Git

Comment puis-je annuler mon dernier engagement en Git?

Est-ce

git reset --hard HEAD 

ou

 git reset --hard HEAD^ 

?

Si vous n’êtes pas totalement sûr de ce que vous entendez par “uncommit” et que vous ne savez pas si vous souhaitez utiliser git reset , veuillez vous reporter à ” Revenir à un précédent commit Git “.

Si vous essayez de mieux comprendre la git reset , reportez-vous à ” Pouvez-vous expliquer ce que” git reset “fait en anglais? “.


Si vous savez que vous voulez utiliser git reset , cela dépend toujours de ce que vous entendez par “uncommit”. Si tout ce que vous voulez faire est d’annuler l’acte de validation, en laissant tout le rest intact, utilisez:

 git reset --soft HEAD^ 

Si vous souhaitez annuler l’acte de validation et tout ce que vous avez mis en scène, mais quittez l’arborescence (vos fichiers sont intacts):

 git reset HEAD^ 

Et si vous voulez réellement le défaire complètement , en supprimant tous les changements non validés, en réinitialisant tout à la validation précédente (comme le posait la question initiale):

 git reset --hard HEAD^ 

La question initiale demandait également HEAD^ not HEAD . HEAD fait référence à la validation actuelle – généralement, la pointe de la twig actuellement extraite. Le ^ est une notation qui peut être attachée à n’importe quel spécificateur de validation et signifie “le commit avant”. Donc, HEAD^ est le commit avant le courant, tout comme master^ est le commit avant le bout de la twig master.

Voici la partie de la documentation de git-rev-parse décrivant toutes les manières de spécifier des commits ( ^ est juste une base parmi d’autres).

Pour conserver les modifications de la validation que vous souhaitez annuler

 git reset --soft HEAD^ 

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

 git reset --hard HEAD^ 

Vous pouvez également dire

 git reset --soft HEAD~2 

revenir 2 commits.

Edit: Comme mentionné, si vous êtes sous Windows, vous devrez mettre HEAD ou valider le hash entre guillemets.

 git reset --soft "HEAD^" git reset --soft "asdf" 

git reset --soft HEAD^ les modifications modifiées dans votre arbre de travail.

git reset --hard HEAD^ !!!

Attention, reset --hard supprimera également vos modifications locales (non validées).

 git reset --hard HEAD^ 

note: si vous êtes sur Windows, vous devrez citer le HEAD ^ so

 git reset --hard "HEAD^" 

Juste une note – si vous utilisez ZSH et voyez l’erreur

 zsh: no matches found: HEAD^ 

Vous devez échapper au ^

 git reset --soft HEAD\^ 

Si vous n’avez pas encore poussé vos modifications, utilisez git reset --soft [Hash for one commit] pour revenir à un commit spécifique. --soft indique à git de garder les modifications --soft (c.-à-d. marque les fichiers comme modifiés). --hard demande à git de supprimer les modifications --hard .

Si vous vous engagez dans la mauvaise twig

Alors que sur la mauvaise twig:

  1. git log -2 vous donne le hash de 2 derniers commits, disons $prev et $last
  2. git checkout $prev checkout correct commit
  3. git checkout -b new-feature-branch crée une nouvelle twig pour l’entité
  4. git cherry-pick $last patches une twig avec vos modifications

Ensuite, vous pouvez suivre l’une des méthodes suggérées ci-dessus pour supprimer votre commit de la première twig.

Soyez prudent avec ça.

Mais vous pouvez utiliser la commande rebase

 git rebase -i HEAD~2 

Un vi va s’ouvrir et tout ce que vous avez à faire est de supprimer la ligne avec le commit. Peut également lire les instructions qui ont été affichées dans l’édition correcte @ vi , quelques choses peuvent être effectuées sur ce mode