2011-01-28 5 views
73

Sto lavorando in una filiale (ad esempio design) e ho apportato una serie di modifiche, ma ho bisogno di scartarle tutte e resettarle per corrispondere alla versione del repository. Pensavo che lo git checkout design lo facesse, ma mi dice che sono già nel ramo design e che ho 3 file modificati.Come scartare tutte le modifiche apportate a un ramo?

Come posso eliminare queste modifiche e ottenere il ramo così com'è ora sul server remoto?

risposta

133

Nota: È possibile annullare .

Prova git checkout -f questo scarterà tutte le modifiche locali che sono non impegnati nel TUTTI rami e master.

47

git azzerato --hard può aiutare se si vuole buttare via tutto dal tuo ultimo commit

+5

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

+10

'git reset --hard HEAD ^' dovrebbe essere la risposta accettata. OP non stava chiedendo altri rami ... – bphilipnyc

+2

Ho provato questo, e penso che abbia cancellato tutto dalla mia ultima spinta, non solo il mio ultimo commit. –

16

Se non si desidera alcun cambiamenti nella design e sicuramente vuole che corrisponde solo un telecomando di ramo, si può anche solo eliminare il ramo e ricrearlo:

# 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

anche: git checkout design; git reset --hard origin/design – user37078

+0

Vorrei anche impegnarmi prima di eliminare il ramo – Asarluhi

+0

Questa dovrebbe essere la risposta accettata –

7

@Will, git immersion è davvero una bella e semplice tutorial git. ti mostrerà come annullare le modifiche per i seguenti casi: non prestato, messo in scena e impegnato. laboratori 14-18

+2

Vorrei solo dire che ora ho fatto git immersion .. più di un anno dopo. OI! Avrei dovuto farlo così tanto prima ... – Will

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

Nella radice fonte: git reset ./ HEAD <--un-stage any staged changes git checkout ./ <--discard any unstaged changes

1

Quando si desidera annullare le modifiche nella vostra filiale locale, è possibile riporre queste modifiche utilizzando il comando git scorta.

git scorta Salva "some_name"

Le modifiche verranno salvate e si possono recuperare quelle più tardi, se si desidera o è possibile eliminarlo. Dopo aver fatto questo, il tuo ramo non avrà alcun codice non vincolato ed è possibile estrarre il codice più recente dal ramo principale usando git pull.