141 votes

Comment supprimer toutes les modifications apportées à une branche ?

Je travaille dans une succursale (c'est à dire design ) et j'ai effectué un certain nombre de modifications, mais j'ai besoin de les supprimer toutes et de les réinitialiser pour qu'elles correspondent à la version du référentiel. Je pensais git checkout design le feraient, mais ça me dit juste que je suis déjà dans la branche. design et que j'ai 3 fichiers modifiés.

Comment puis-je supprimer ces modifications et obtenir la branche telle qu'elle se présente actuellement sur le serveur distant ?

0 votes

Voici un lien vers ma réponse à une question connexe : stackoverflow.com/questions/22620393/

6voto

Clifford Harms Points 59

Dans la racine de la source : git reset ./ HEAD <--un-stage any staged changes git checkout ./ <--discard any unstaged changes

5voto

user4948761 Points 69

Lorsque vous voulez supprimer les changements dans votre branche locale, vous pouvez mettre ces changements en réserve en utilisant la commande git stash.

git stash save "certain_nom"

Vos modifications seront enregistrées et vous pourrez les récupérer plus tard, si vous le souhaitez, ou les supprimer. Après avoir fait cela, votre branche n'aura pas de code non commité et vous pouvez tirer le dernier code de votre branche principale en utilisant git pull.

2voto

F1Linux Points 129

Méthode REVERSIBLE pour annuler toutes les modifications :

J'ai trouvé cette question après avoir fait une fusion et oublié de la vérifier. développer immédiatement après. Vous l'avez deviné : J'ai commencé à modifier quelques fichiers directement sur maître . D'Oh ! Comme ma situation n'est guère unique (nous l'avons tous fait, n'est-ce pas ;->), je vais proposer une méthode réversible que j'ai utilisée pour rejeter toutes les modifications afin d'obtenir maître On dirait que développer encore.

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 d'abord rangé tous les changements, ils ont ensuite été nettoyés. Toutes les modifications apportées aux fichiers en erreur pour maître ont disparu et la parité a été rétablie.

Imaginons que je veuille maintenant restaurer ces changements. Je peux le faire. La première étape consiste à trouver le hash de la cachette que je viens de vider/supprimer :

git fsck --no-reflog | awk '/dangling commit/ {print $3}'

Après avoir appris le hachage, j'ai restauré avec succès les changements non validés avec :

git stash apply hash-of-cleared-stash

Je ne voulais pas vraiment restaurer ces changements, je voulais juste vérifier que je pouvais les récupérer, alors je les ai effacés à nouveau.

Une autre option consiste à appliquer la réserve à une autre branche plutôt que d'effacer les modifications. Donc, en termes d'effacement des changements faits en travaillant sur la mauvaise branche, stash vous donne beaucoup de flexibilité pour vous remettre de votre bobo.

Quoi qu'il en soit, si vous voulez un moyen réversible d'effacer les modifications apportées à une branche, ce qui précède est un moyen moins dangereux dans ce cas d'utilisation.

1voto

Brendan Boyle Points 18

Pour d'autres, si vous voulez juste annuler les changements sur un seul fichier :

git restore <fileName>

0voto

thestar Points 384

git checkout -f

Cela suffit pour répondre à votre question. La seule chose est qu'une fois que c'est fait, c'est fait. Il n'y a pas d'annulation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X