2015-03-12 21 views
46

Come posso eliminare tutte le modifiche in tutti i file del mio repository?git checkout tutti i file

Dire che sono in una filiale e ho apportato alcune modifiche. git status restituisce un set di file in "Modifiche non in fase di commit per il commit" e noto che vorrei eliminare tutte queste modifiche in tutti i file. Come posso farlo con un singolo comando?

so di poter fare quanto segue alla verifica un solo file:

git checkout -- <file> 

ho notato che git checkout -- solo restituisce la lista di tutti i file uncommited. Tuttavia, non riesco a trovare un modo per effettuare il checkout a tutti loro, ad esempio git checkout --all.

Ho controllato man git checkout e non ho trovato nulla. Inoltre ho visto Git: Checkout all files except one e provato git checkout . e non ha funzionato neanche.

Devo farlo a livello di programmazione, eseguendo il looping dell'uscita git checkout --?

risposta

67

Se si è alla radice della directory di lavoro, è possibile eseguire git checkout -- . per il check-out di tutti i file nell'HEAD corrente e sostituire i file locali.

È inoltre possibile eseguire git reset --hard per ripristinare la directory di lavoro e sostituire tutte le modifiche (incluso l'indice).

+0

sono le due opzioni equivalenti (se si reimposta su HEAD)? – lucidbrot

+2

No, ci sono alcune differenze. Ad esempio 'git checkout - .' resetterà solo le modifiche allo stato dell'indice. Quindi, se hai già aggiunto dei file all'indice, questo è il modo in cui verrà ripristinato. D'altra parte 'git reset --hard' getterà anche via l'indice, quindi per esempio se hai aggiunto dei file non tracciati all'indice (per iniziare a seguirli), verranno rimossi. 'git checkout' consente anche di ripristinare parzialmente la directory di lavoro passando un percorso più specifico che può essere molto utile. – poke

+0

qual è la differenza tra git checkout. e git checkout -.? –