git controlla tutti i file


127

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

Diciamo che sono in una filiale e ho apportato alcune modifiche. git statusrestituisce una serie di file in "Modifiche non programmate per il commit" e ho notato che vorrei sbarazzarmi di tutte queste modifiche in tutti i file. Come posso farlo con un solo comando?

So di poter fare quanto segue per ritirare un solo file:

git checkout -- <file>

Ho notato che git checkout --da solo restituisce l'elenco di tutti i file non registrati. Tuttavia, non riesco a trovare un modo per controllarli tutti, qualcosa del genere git checkout --all.

Ho controllato man git checkoute non sono riuscito a trovare nulla. Inoltre ho visto Git: Checkout tutti i file tranne unogit checkout . e ho provato e non ha funzionato neanche.

Dovrei farlo a livello di codice, eseguendo un ciclo attraverso l' git checkout --output?

Risposte:


194

Se sei alla radice della tua directory di lavoro, puoi farlo git checkout -- . check-out di tutti i file nell'HEAD corrente e sostituire i tuoi file locali.

Puoi anche git reset --hardripristinare la tua directory di lavoro e sostituire tutte le modifiche (incluso l'indice).


le due opzioni sono equivalenti (se si resetta a HEAD)?
lucidbrot

10
No, ci sono alcune differenze. Ad esempio git checkout -- ., ripristinerà solo le modifiche allo stato dell'indice. Quindi, se hai già aggiunto file all'indice, è a questo che verrà ripristinato. D'altra parte git reset --hardeliminerà anche l'indice, quindi, ad esempio, se hai file non tracciati aggiunti all'indice (per iniziare a tracciarli), verranno rimossi anche loro. git checkoutpermette inoltre di ripristinare solo parzialmente la directory di lavoro passando un percorso più specifico che può essere molto utile.
colpisci il


4
@poke Ciao Poke, sono sicuro che git checkout -. non funziona. L'ho provato per più modifiche non in scena.
Aman

2
altri comandi per ottenere lo stesso risultato: git checkout --force,git reset --hard
Tjalling

3

Un altro modo che ho trovato utile è:

git checkout <wildcard> 

Esempio:

git checkout *.html

Più generalmente:

git checkout <branch> <filename/wildcard>

1
Se il globbing è abilitato sulla tua shell e ci sono file non tracciati nella directory di lavoro, questo fallirà a meno che non esci dall'asterisco, ad esempio git checkout \*o git checkout '*'.
Josh Cooley
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.