puis j'ai ajouté des fichiers, comment puis-je restaurer et supprimer ce qui se trouve dans mes fichiers actuels qui n'ont pas encore été ajoutés / validés?
non, ce n'est pas ce que demande l'OP - il est clair qu'il veut revenir au dernier commit, pas annuler le dernier commit. il n'a pas dit qu'il avait ajouté des fichiers et les avait ensuite validés. si clairement qu'il veut le dernier commit.
Paul
1
Il est trop difficile de trouver une réponse à cette question super courante
Sam
Réponses:
211
Caveat Emptor - Commandes destructives à venir.
Atténuation - git reflogpeut vous sauver si vous en avez besoin.
1) ANNULER les modifications du fichier local et GARDER votre dernier commit
git reset --hard
2) ANNULER les modifications du fichier local et SUPPRIMER votre dernier commit
git reset --hard HEAD^
3) GARDEZ les modifications de fichier local et SUPPRIMEZ votre dernier commit
Cette commande supprimera votre commit précédent, alors utilisez-la avec prudence! git reset --hard is plus sûr
rudivonstaden
9
WTF fait cela comme la bonne réponse avec 36 votes positifs. Je viens de perdre une journée de travail pour ça ... parce que j'ai lu la réponse pas le commentaire. Ce n'est pas la bonne réponse à la question!
Chris Nevill
1
OK tout n'est pas perdu! Vous pouvez faire git reflog cela vous permettra de voir les commits que vous avez faits avant la réinitialisation. Vous pouvez ensuite vérifier ces commits
Chris Nevill
3
Pour ce que ça vaut, j'avais interprété la question de l'OP comme "comment annuler le commit et supprimer les fichiers actuels", mais elle était et reste ambiguë. J'aurais compris différemment si l'OP avait simplement dit "comment supprimer les fichiers actuels qui n'ont pas été ajoutés ou
validés
2
Git est l'antithèse de la déclaration d'Alan Kays Les choses simples devraient être simples, les choses complexes devraient être possibles. ... surtout de sa première partie. Merci encore pour votre réponse. ça m'a aidé.
0xC0000022L
46
Si vous souhaitez supprimer le contenu nouvellement ajouté et les fichiers déjà mis en scène (ainsi ajoutés à l'index), vous utilisez:
git reset --hard
Si vous souhaitez supprimer également votre dernier commit (est celui avec le message "blah") alors mieux vaut utiliser:
git reset --hard HEAD^
Pour supprimer les fichiers non suivis (donc les nouveaux fichiers non encore ajoutés à l'index) et les dossiers, utilisez:
fait cela, mais les fichiers sont toujours là. (les fichiers non suivis sont toujours là)
Blankman
dans ce cas, vous pourriez faire un "git stash"
jacktrade
3
voté pour parce que c'est la seule réponse claire et sans ambiguïté à la question claire et sans ambiguïté du PO.
Paul
4
Vous pouvez annuler un commit en utilisant git revert HEAD^pour revenir à l'avant-dernier commit. Vous pouvez également spécifier le commit à annuler en utilisant l'id au lieu de HEAD ^
Réponses:
Caveat Emptor - Commandes destructives à venir.
Atténuation -
git reflog
peut vous sauver si vous en avez besoin.1) ANNULER les modifications du fichier local et GARDER votre dernier commit
2) ANNULER les modifications du fichier local et SUPPRIMER votre dernier commit
3) GARDEZ les modifications de fichier local et SUPPRIMEZ votre dernier commit
la source
Si vous souhaitez supprimer le contenu nouvellement ajouté et les fichiers déjà mis en scène (ainsi ajoutés à l'index), vous utilisez:
Si vous souhaitez supprimer également votre dernier commit (est celui avec le message "blah") alors mieux vaut utiliser:
Pour supprimer les fichiers non suivis (donc les nouveaux fichiers non encore ajoutés à l'index) et les dossiers, utilisez:
la source
git reset --hard
forcera le répertoire de travail à revenir au dernier commit et supprimera les fichiers nouveaux / modifiés.la source
Vous pouvez annuler un commit en utilisant
git revert HEAD^
pour revenir à l'avant-dernier commit. Vous pouvez également spécifier le commit à annuler en utilisant l'id au lieu de HEAD ^la source
Si vous souhaitez simplement annuler la validation du dernier commit, utilisez ceci:
fonctionne comme du charme pour moi.
la source
Un moyen simple et infaillible d'annuler les modifications de fichiers locaux depuis le dernier commit est de les placer dans une nouvelle branche:
Cela laisse les changements dans la nouvelle branche. Revenez à la branche d'origine pour la retrouver au dernier commit:
La nouvelle branche est un bon endroit pour pratiquer différentes manières d'annuler les modifications sans risquer de gâcher la branche d'origine.
la source