Question Comment libérer mon dernier commit dans Git [duplicate]


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

Comment puis-je libérer mon dernier commit en git?

Est-ce

git reset --hard HEAD

ou

git reset --hard HEAD^

?


610
2018-05-16 22:26


origine


Réponses:


Si vous n'êtes pas totalement sûr de ce que vous entendez par "non-motivé" et ne savez pas si vous voulez utiliser git reset, s'il te plait regarde "Revenir à un commit Git précédent".

Si vous essayez de comprendre git reset mieux, s'il vous plaît voir "Pouvez-vous expliquer ce que "git reset" fait en anglais?".


Si vous savez que vous voulez utiliser git reset, cela dépend encore de ce que vous entendez par "non-motivé". 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 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 tu veux vraiment complètement défaire, rejeter toutes les modifications non validées, tout réinitialiser au commit précédent (comme la question initiale posée):

git reset --hard HEAD^

La question initiale a également demandé à HEAD^ ne pas HEAD. HEAD fait référence à la validation en cours - généralement, la pointe de la branche actuellement extrait. le ^ est une notation qui peut être attachée à tout commit, et signifie "le commit avant". Alors, HEAD^ est le commit avant le courant, tout comme master^ est le commit avant la pointe de la branche master.

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


981
2018-05-17 00:52



Pour conserver les modifications du commit que vous voulez annuler

git reset --soft HEAD^

Pour détruire les modifications du commit que vous voulez annuler

git reset --hard HEAD^

Vous pouvez également dire

git reset --soft HEAD~2

pour revenir 2 commits.

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

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

231
2017-11-20 19:12



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

git reset --hard HEAD^  JETERA LES CHANGEMENTS QUE VOUS AVEZ FAITS !!!


147
2018-05-16 22:29



Faites 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 ^ donc

git reset --hard "HEAD^"

47
2018-05-16 22:28



Juste une note - si vous utilisez ZSH et voyez l'erreur

zsh: no matches found: HEAD^

Vous devez échapper à la ^

git reset --soft HEAD\^

20
2017-09-12 12:54



Si vous n'avez pas encore utilisé vos modifications, utilisez git reset --soft [Hash for one commit] revenir à un commit spécifique. --soft Dit à git de garder les changements annulés (c.-à-d., marque les fichiers comme modifiés). --hard dit à git de supprimer les changements annulés.


18
2017-10-22 21:07



Si vous vous engagez dans la mauvaise branche

Alors que sur la mauvaise branche:

  1. git log -2 vous donne des hashes 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 branche pour la fonctionnalité
  4. git cherry-pick $last patches une branche 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 branche.


11
2018-01-24 01:26



Soyez prudent avec ça.

Mais vous pouvez utiliser la commande rebase

git rebase -i HEAD~2

UNE 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é montrées dans la bonne édition @ vi, un couple de choses peuvent être effectuées sur ce mode


1
2017-08-12 14:44