2011-01-28 4 views
73

Je travaille dans une branche (c'est-à-dire design) et j'ai apporté un certain nombre de modifications, mais je dois les supprimer toutes et les réinitialiser pour qu'elles correspondent à la version du référentiel. Je pensais que git checkout design le ferait, mais il me dit juste que je suis déjà dans la branche design et que j'ai 3 fichiers modifiés. Comment puis-je rejeter ces modifications et obtenir la branche telle qu'elle est actuellement sur le serveur distant?Comment annuler toutes les modifications apportées à une branche?

Répondre

133

Remarque: Vous ne peut pas annuler cela.

Essayez git checkout -f Ceci annule les modifications locales qui sont pas engagés dans TOUS branches et maître.

47

git reset --hard peut vous aider si vous voulez jeter tout depuis votre dernier commit

+5

ou 'git reset --hard HEAD ^' – deadfish

+10

'git reset --hard HEAD ^' devrait vraiment être la réponse acceptée. OP ne demandait pas d'autres branches ... – bphilipnyc

+2

J'ai essayé cela, et je pense qu'il a tout effacé depuis mon dernier push, pas seulement mon dernier commit. –

16

Si vous ne voulez pas les changements dans design et que vous voulez certainement pour correspondre à peu de télécommande branche, vous pouvez aussi simplement supprimer la branche et recréez:

# Switch to some branch other than design 
$ git br -D design 
$ git co -b design origin/design   # Will set up design to track origin's design branch 
+5

aussi: git caisse design; git reset --hard origine/design – user37078

+0

Je voudrais également commettre avant de supprimer la branche – Asarluhi

+0

Cela devrait être la réponse acceptée –

7

@Will, git immersion est un tutoriel git vraiment sympa et simple. il vous montrera comment annuler les changements dans les cas suivants: non-staging, staged et commit. laboratoires 14-18

+2

Je voudrais juste dire que j'ai maintenant fait l'immersion git .. plus d'un an plus tard. OI! J'aurais dû le faire tellement plus tôt ... – Will

10
git diff master > branch.diff 
git apply --reverse branch.diff 
2

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

1

Lorsque vous souhaitez annuler les modifications dans votre branche locale, vous pouvez cacher ces changements en utilisant la commande git stash.

git stash sauver « some_name »

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

Questions connexes