Méthode RÉVERSIBLE pour annuler toutes les modifications:
Je trouve cette question après après avoir fait une fusion et l' oubli à la caisse développer immédiatement après. Vous l'avez deviné: j'ai commencé à modifier quelques fichiers directement sur master . D'Oh! Comme ma situation n'est guère unique (nous l'avons tous fait, n'est-ce pas; ->), je vais vous proposer un moyen réversible que j'avais l'habitude d'annuler tous les changements pour que le maître ressemble à nouveau à développer .
Après avoir fait un git diff
pour voir quels fichiers ont été modifiés et évaluer la portée de mon erreur, j'ai exécuté:
git stash
git stash clear
Après avoir enregistré toutes les modifications, elles ont ensuite été effacées. Toutes les modifications apportées aux fichiers par erreur dans le master ont disparu et la parité est restaurée.
Disons que je voulais maintenant restaurer ces changements. Je peux le faire. La première étape consiste à trouver le hachage de la réserve que je viens de supprimer / déposer:
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
Après avoir appris le hachage, j'ai restauré avec succès les modifications non validées avec:
git stash apply hash-of-cleared-stash
Je ne voulais pas vraiment restaurer ces modifications, je voulais juste valider que je pouvais les récupérer, alors je les ai effacées à nouveau.
Une autre option consiste à appliquer la réserve à une branche différente , plutôt que d'effacer les modifications. Donc, en termes d'effacement des modifications apportées après avoir travaillé sur la mauvaise branche, stash
vous donne beaucoup de flexibilité pour récupérer de votre boo-boo.
Quoi qu'il en soit, si vous voulez un moyen réversible d'effacer les modifications d'une branche, ce qui précède est un moyen moins dangereux dans ce cas d'utilisation.
git reset --hard HEAD^