Come rimuovere i file locali (non tracciati) dall'attuale albero di lavoro Git?
-
09-06-2019 - |
Domanda
Come si eliminano i file locali non tracciati dall'albero di lavoro corrente?
Soluzione
Come da documentazione Git vai pulito
Rimuovi i file non tracciati dall'albero di lavoro
Il passaggio 1 consiste nel mostrare cosa verrà eliminato utilizzando il file -n
opzione:
# Print out the list of files which will be removed (dry run)
git clean -n
Passaggio pulito - attenzione:questo eliminerà i file:
# Delete the files from the repository
git clean -f
- Per rimuovere le directory, esegui
git clean -f -d
Ogit clean -fd
- Per rimuovere i file ignorati, esegui
git clean -f -X
Ogit clean -fX
- Per rimuovere file ignorati e non ignorati, esegui
git clean -f -x
Ogit clean -fx
Nota la differenza tra maiuscole e minuscole su X
per gli ultimi due comandi.
Se clean.requireForce
è impostato su "true" (il valore predefinito) nella configurazione, è necessario specificarlo -f
altrimenti non accadrà davvero nulla.
Ancora una volta vedere il git-clean
documenti per ulteriori informazioni.
Opzioni
-f
,--force
Se la variabile di configurazione Git pulita. Requireforce non è impostato su false, Git Clean si rifiuterà di eseguire a meno che
-f
,-n
O-i
.
-x
Non utilizzare le regole IGNORE standard lette da .Gitignore (per directory) e
$GIT_DIR/info/exclude
, ma usa ancora le regole di ignoranza fornite con-e
opzioni.Ciò consente di rimuovere tutti i file non tracciati, compresi i prodotti di costruzione.Questo può essere utilizzato (possibilmente insieme a Git reset) per creare una directory di lavoro incontaminata per testare una build pulita.
-X
Rimuovi solo i file ignorati da Git.Ciò può essere utile per ricostruire tutto da zero, ma conservare i file creati manualmente.
-n
,-dry-run
In realtà non rimuovere nulla, mostra solo cosa verrebbe fatto.
-d
Rimuovi le directory non tracciate oltre ai file non tracciati.Se una directory non rintracciata è gestita da un diverso repository Git, non viene rimossa per impostazione predefinita.Utilizzo
-f
Opzione due volte se vuoi davvero rimuovere una tale directory.
Altri suggerimenti
Utilizzo git clean -f -d
per assicurartene directory vengono anche rimossi.
Potrai quindi verificare se i tuoi file sono davvero spariti git status
.
Sono sorpreso che nessuno ne abbia parlato prima:
git clean -i
Questo significa interattivo e otterrai una rapida panoramica di ciò che verrà eliminato offrendoti la possibilità di includere/escludere i file interessati.Nel complesso, ancora più veloce dell'esecuzione dell'obbligatorio --dry-run
prima della vera pulizia.
Dovrai inserire a -d
se vuoi prenderti cura anche delle cartelle vuote.Alla fine, diventa un simpatico alias:
git iclean
Detto questo, tenere in mano i comandi interattivi può essere stancante per gli utenti esperti.In questi giorni utilizzo solo il già citato git clean -fd
Se la directory non tracciata è un proprio repository git (ad es.sottomodulo), è necessario utilizzare -f
due volte:
git clean -d -f -f
Un modo semplice per rimuovere file non tracciati
Per rimuovere tutti i file non tracciati, il modo semplice è quello di aggiungili tutti prima E reimpostare il repository come sotto
git add --all
git reset --hard HEAD
mi piace git stash push -u
perché puoi annullarli tutti con git stash pop
.
MODIFICARE:Inoltre ho trovato un modo per mostrare il file non tracciato in una scorta (ad es. git show stash@{0}^3
) https://stackoverflow.com/a/12681856/338986
EDIT2: git stash save
è deprecato a favore di push
.Grazie @script-wolf.
Questo è quello che uso sempre:
git clean -fdx
Per un progetto molto grande potresti volerlo eseguire un paio di volte.
git-clean è quello che stai cercandoViene utilizzato per rimuovere i file non tracciati dall'albero di lavoro.
Se necessario, per rimuovere file non tracciati da una particolare sottodirectory,
git clean -f {dir_path}
E un modo combinato per eliminare directory/file non tracciati e file ignorati.
git clean -fxd {dir_path}
dopodiché avrai modificato i file solo in git status
.
git clean -fd
rimuove la directory
git clean -fX
rimuove i file ignorati
git clean -fx
rimuove i file ignorati e non ignorati
possono essere utilizzate tutte le opzioni di cui sopra in combinazione come
git clean -fdXx
controlla il manuale di git per ulteriore aiuto
Rimuovi tutte le cartelle e i file aggiuntivi in questo repository + sottomoduli
Questo ti porta nello stesso stato del clone fresco.
git clean -ffdx
Rimuovi tutte le cartelle e i file aggiuntivi in questo repository ma non i suoi sottomoduli
git clean -fdx
Rimuovi solo le cartelle extra ma non i file (es.cartella di creazione)
git clean -fd
Rimuovi cartelle extra + file ignorati (ma non i file appena aggiunti)
Se il file non è stato ignorato e non è ancora stato archiviato, rimane.Da notare la X maiuscola.
git clean -fdX
Nuova modalità interattiva
git clean
OK, eliminazione file e cartelle indesiderati non tracciati sono facili da usare git
nella riga di comando, fai così:
git clean -fd
Doppio controllo prima di farlo poiché eliminerà i file e le cartelle senza creare alcuna cronologia...
Anche in questo caso, -f
sta per forza e -d
sta per directory...
Quindi, se desideri eliminare solo i file, puoi utilizzare -f
soltanto:
git clean -f
Se desideri eliminare (directory) e file, puoi eliminare solo directory e file non tracciati come questi:
git clean -fd
Inoltre, puoi usare -x
flag per includere i file che vengono ignorati da git.Questo sarebbe utile se vuoi eliminare tutto.
E aggiungendo -i
flag, fa sì che Git ti chieda il permesso per eliminare i file uno per uno mentre sei in movimento.
Se non sei sicuro e vuoi controllare prima le cose, aggiungi -n
bandiera.
Utilizzo -q
se non vuoi vedere alcun rapporto dopo la cancellazione avvenuta con successo.
Creo anche l'immagine qui sotto per renderla più memorizzabile, specialmente ho visto molte persone confondersi -f
per pulire la cartella a volte o mescolarla in qualche modo!
Un modo migliore è usare:vai pulito
git clean -d -x -f
Ciò rimuove i file non tracciati, incluse le directory (-d)
e file ignorati da git (-x)
.
Inoltre, sostituire il -f
discussione con -n
eseguire a dry-run
O -i
per la modalità interattiva e ti dirà cosa verrà rimosso.
Approccio interattivo per l'utente:
git clean -i -fd
Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/arsdumpgenerator/s3/ [y/N]? y
-i per interattivo
-f per forza
-d per la directory
-x per file ignorati (aggiungi se necessario)
Nota: Aggiungere -N O --funzionamento a secco solo per verificare cosa farà.
git clean -f -d -x $(git rev-parse --show-cdup)
si applica in modo pulito alla directory root, indipendentemente da dove la chiami all'interno dell'albero delle directory del repository.Lo uso sempre perché non ti obbliga a lasciare la cartella in cui lavori adesso e consente di pulire e eseguire il commit direttamente dal luogo in cui ti trovi.
Assicurati che segnali -f
, -d
, -x
soddisfare le tue esigenze:
-d
Remove untracked directories in addition to untracked files. If an
untracked directory is managed by a different Git repository, it is
not removed by default. Use -f option twice if you really want to
remove such a directory.
-f, --force
If the Git configuration variable clean.requireForce is not set to
false, git clean will refuse to delete files or directories unless
given -f, -n or -i. Git will refuse to delete directories with .git
sub directory or file unless a second -f is given. This affects
also git submodules where the storage area of the removed submodule
under .git/modules/ is not removed until -f is given twice.
-x
Don't use the standard ignore rules read from .gitignore (per
directory) and $GIT_DIR/info/exclude, but do still use the ignore
rules given with -e options. This allows removing all untracked
files, including build products. This can be used (possibly in
conjunction with git reset) to create a pristine working directory
to test a clean build.
Sono disponibili anche altri flag, basta controllare git clean --help
.
Per me ha funzionato solo quanto segue:
git clean -ffdx
In tutti gli altri casi, ricevevo un messaggio "Saltare la directory" per alcune sottodirectory.
Un trucchetto per situazioni del genere che ho appena inventato e provato (funziona perfettamente):
git add .
git reset --hard HEAD
Attenzione! Essere sicuri di apportare le modifiche necessarie (anche in file non tracciati) prima di eseguire questa operazione.
Se desideri semplicemente eliminare i file elencati come non tracciati da "git status"
git stash save -u
git stash drop "stash@{0}"
Preferisco questo a "Git Clean" perché "Git Clean" eliminerà i file ignorati da Git, quindi la tua prossima build dovrà ricostruire tutto e potresti perdere anche le tue impostazioni IDE.
Per sapere cosa verrà eliminato prima dell'eliminazione effettiva:
git clean -d -n
Verrà prodotto qualcosa del tipo:
Rimuoverebbe sample.txt
Per eliminare tutto ciò che è elencato nell'output del comando precedente:
git clean -d -f
Verrà prodotto qualcosa del tipo:
Rimozione del file sample.txt
Per rimuovere i file non tracciati devi prima utilizzare il comando per visualizzare i file che saranno interessati dalla pulizia
git clean -fdn
Questo ti mostrerà l'elenco dei file che verranno eliminati.Ora per eliminare effettivamente quei file usa questo comando:
git clean -fd
Fai attenzione mentre esegui il comando "git clean".
Usalo sempre -n
prima di eseguire il comando vero e proprio in quanto ti mostrerà quali file verranno rimossi.
git clean -n -d
git clean -f -d
Per impostazione predefinita, git clean
rimuoverà solo i file non tracciati che non vengono ignorati.Qualsiasi file che corrisponde a un modello nel tuo .gitignore o altri file da ignorare non verrà rimosso.Se vuoi rimuovere anche questi file, puoi aggiungere un file -x
al comando pulito.
git clean -f -d -x
È disponibile anche la modalità interattiva -i
con il comando clean
git clean -x -i
In alternativa
Se non sei sicuro al 100% che eliminare il tuo lavoro non impegnato sia sicuro, puoi invece utilizzare lo stashing
git stash --all
Inoltre cancellerà la tua directory ma ti darà la flessibilità di recuperare i file in qualsiasi momento utilizzando scorta con fare domanda a O pop.Quindi in un secondo momento potresti svuotare la tua scorta usando:
git stash drop // or clean
Normale git clean
il comando non rimuove i file non tracciati con my git version 2.9.0.windows.1
.
$ git clean -fdx # doesn't remove untracked files
$ git clean -fdx * # Append star then it works!
git clean -f to remove untracked files from working directory.
Ho trattato alcune nozioni di base qui nel mio blog, comandi-git-intro-basic
Comando suggerito per Rimozione di file non tracciati dai documenti git È vai pulito
vai pulito - Rimuovere i file non tracciati dall'albero di lavoro
Metodo suggerito: Modalità interattiva utilizzando git clean -i
quindi possiamo averne il controllo.vediamo le restanti opzioni disponibili.
Opzioni disponibili:
git clean
-d -f -i -n -q -e -x -X (can use either)
Spiegazione:
1. -D
Rimuovi le directory non tracciate oltre ai file non tracciati.Se una directory non rintracciata è gestita da un diverso repository Git, non viene rimossa per impostazione predefinita.Usa l'opzione -f due volte se vuoi davvero rimuovere tale directory.
2.-f, --forza
Se la variabile di configurazione GIT Clean.RequireForce non è impostata su False, Git Clean si rifiuterà di eseguire a meno che non viene dato -f, -n o -i.
3.-i, --interattivo
Mostra cosa verrebbe fatto e pulisci i file in modo interattivo.Per i dettagli vedere "Modalità interattiva".
4.-n, --esecuzione a secco
In realtà non rimuovere nulla, mostra solo cosa verrebbe fatto.
5.-q, --tranquillo
Stai tranquillo, segnala solo gli errori, ma non i file che sono stati rimossi con successo.
6.-e , --exclude=
Oltre a quelli trovati in .Gitignore (per directory) e $ git_dir/influisce, considerano anche questi schemi che si trovano nell'insieme delle regole di ignorare in vigore.
7.-X
Non utilizzare le regole IGNORE Standard Lette da .Gitignore (per directory) e $ git_dir/influisce/esclude, ma usa comunque le regole di ignorare le opzioni fornite con -e.Ciò consente di rimuovere tutti i file non tracciati, inclusi i prodotti di build.Questo può essere utilizzato (possibilmente insieme a Git reset) per creare una directory di lavoro incontaminata per testare una build pulita.
8.-X
Rimuovi solo i file ignorati da Git.Questo può essere utile per ricostruire tutto da zero, ma conservare i file creati manualmente.
Possiamo rimuovere facilmente i file locali non tracciati dall'attuale albero di lavoro git utilizzando i commenti git riportati di seguito.
git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]
Esempio:
git reset --hard HEAD
Collegamenti:
Pulisci il repository git e tutti i sottomoduli in modo ricorsivo
Il seguente comando ripulirà il repository Git corrente e tutti i suoi sottomoduli in modo ricorsivo:
(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)
oh-mio-zsh con zsh fornisce quegli ottimi alias tramite il plugin git.Possono essere usati anche in bash.
gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'
gclean
rimuove le directory non tracciate oltre ai file non tracciati.gpristine
ripristino hard le modifiche locali, rimuovi le directory non tracciate, file non tracciati e non utilizzare le regole di ignora standard lette da .gitignore (per directory) e $GIT_DIR/info/exclude, ma utilizza comunque le regole di ignora fornite con le opzioni -e.Ciò consente di rimuovere tutti i file non tracciati, inclusi i prodotti di build.Questo può essere usato (possibilmente insieme a git reset) per creare una directory di lavoro incontaminata per testare una build pulita.
git clean -f
rimuoverà i file non tracciati dal git corrente
git clean -fd
quando desideri rimuovere directory e file, verranno eliminati solo le directory e i file non tracciati
Nota:Per prima cosa vai alla directory e controlla il ramo che desideri pulire.
-i
modalità interattiva e ti dirà cosa verrà rimosso e potrai scegliere un'azione dall'elenco.
Pulire File solo [Le cartelle non verranno elencate e non verranno pulite]:
$ git clean -i
Pulire file e cartelle:
$ git clean -d -i
-d
comprese le directory.
Se scegli c
dall'elenco.Verranno eliminati i file/cartelle non tracciati e verranno rimossi anche i file/cartelle che hai incasinato.*
Ad esempio:Se ristrutturi la cartella sul tuo telecomando e trasferisci le modifiche sul tuo computer locale.i file/cartelle creati inizialmente da altri si troveranno nella cartella precedente e in quella nuova che ristrutturerai.