remove - Come rimuovere file locali(non tracciati) dall'albero di lavoro attuale di Git?
pull request cos è (20)
Come si eliminano i file locali non tracciati dal proprio albero di lavoro corrente?
Modo semplice per rimuovere i file non tracciati
Per rimuovere tutti i file non tracciati, il modo più semplice è aggiungerli tutti per primi e reimpostare il repository come di seguito
git add --all git reset --hard HEAD
Eliminare ricorsivamente il repository git e tutti i sottomoduli
Il seguente comando cancellerà ricorsivamente l'attuale repository git e tutti i suoi sottomoduli:
(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)
Fai attenzione mentre esegui il comando `git clean`.
Usa sempre -n
prima di eseguire il comando attuale, in quanto ti mostrerà quali file verrebbero rimossi.
git clean -n -d
git clean -f -d
Per impostazione predefinita, git clean
rimuove solo i file non tracciati che non vengono ignorati. Tutti i file che corrispondono a un pattern nel tuo .gitignore o altri file ignorati non verranno rimossi. Se si desidera rimuovere anche questi file, è possibile aggiungere un comando -x
al comando clean.
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 la cancellazione del tuo lavoro non impegnato sia sicura, puoi invece utilizzare la conservazione
git stash --all
Risulterà anche la tua directory, ma ti darà la possibilità di recuperare i file in qualsiasi momento utilizzando la funzione stash con apply o pop . Quindi, in un secondo momento, è possibile cancellare la sequenza usando:
git stash drop // or clean
Come da Git Documentation git clean
Rimuovi i file non tracciati dall'albero di lavoro
Il passaggio 1 mostra ciò che verrà eliminato usando l'opzione -n
:
git clean -n
Clean Step - Attenzione: questo cancellerà i file :
git clean -f
- Per rimuovere le directory,
git clean -fd
git clean -f -d
ogit clean -fd
- Per rimuovere i file ignorati, esegui
git clean -f -X
ogit clean -fX
- Per rimuovere i file ignorati e non ignorati, esegui
git clean -f -x
ogit clean -fx
Notare la differenza di caso sulla X
per i due ultimi comandi.
Se clean.requireForce
è impostato su "true" (predefinito) nella configurazione, è necessario specificare -f
altrimenti non accadrà nulla.
Di nuovo, consulta i documenti git-clean
per maggiori informazioni.
Opzioni
-f
--vigore
Se la variabile di configurazione Git clean.requireForce non è impostata su false, git clean rifiuterà di essere eseguita a meno che non sia data -f, -n o -i.
-X
Non utilizzare le regole standard di ignoranza lette da .gitignore (per directory) e $ GIT_DIR / info / exclude, ma continuare a utilizzare le regole di ignoranza fornite con le opzioni -e. Ciò consente di rimuovere tutti i file non tracciati, inclusi i prodotti di costruzione. Questo può essere usato (possibilmente in combinazione con git reset) per creare una directory di lavoro incontaminata per testare una build pulita.
-X
Rimuovi solo i file ignorati da Git. Questo può essere utile per ricostruire tutto da zero, ma mantenere i file creati manualmente.
-n
--funzionamento a secco
Non rimuovere nulla, mostra solo cosa sarebbe stato fatto.
-d
Rimuovere le directory non tracciate oltre ai file non tracciati. Se una directory non tracciata è gestita da un repository Git diverso, non viene rimossa per impostazione predefinita. Usa l'opzione -f due volte se vuoi davvero rimuovere questa directory.
Il normale comando git clean
non rimuove i file non tracciati con la mia git version 2.9.0.windows.1
.
$ git clean -fdx # doesn't remove untracked files
$ git clean -fdx * # Append star then it works!
Mi piace git stash push -u
perché puoi annullarli tutti con git stash pop
.
EDIT: Ho trovato anche un modo per mostrare il file non tracciato in una scorta (es. git show [email protected]{0}^3
) https://.com/a/12681856/338986
EDIT2: git stash save
è deprecato a favore di push
. Grazie @ script-wolf.
Per rimuovere i file non tracciati devi prima usare il comando per visualizzare i file che saranno interessati dalla pulizia
git clean -fdn
Questo ti mostrerà la lista dei file che saranno cancellati. Ora per eliminare effettivamente quei file usa questo comando:
git clean -fd
Per sapere cosa verrà eliminato prima di eliminare effettivamente:
git clean -d -n
Produrrà qualcosa come:
Rimuovere sample.txt
Per eliminare tutto elencato nell'output del comando precedente:
git clean -d -f
Produrrà qualcosa come:
Rimozione di sample.txt
Questo è quello che uso sempre:
git clean -fdx
Per un progetto molto grande potresti voler eseguirlo un paio di volte.
Se la directory non tracciata è un repository git proprio (ad es. Il sottomodulo), è necessario utilizzare -f
due volte:
git clean -d -f -f
Se vuoi solo cancellare i file elencati come non catalogati da 'git status'
git stash save -u
git stash drop "[email protected]{0}"
Preferisco questo a 'git clean' perché 'git clean' cancellerà i file ignorati da git, quindi la tua prossima build dovrà ricostruire tutto e potresti perdere anche le tue impostazioni IDE.
Sono sorpreso che nessuno lo abbia mai detto prima:
git clean -i
Questo significa interattivo e avrai una rapida panoramica di ciò che sta per essere cancellato offrendoti la possibilità di includere / escludere i file interessati. Nel complesso, è ancora più veloce rispetto all'esecuzione obbligatoria --dry-run
prima della vera pulizia.
Dovrai lanciare in -d
se vuoi anche occuparti delle cartelle vuote. Alla fine, è un bel alias:
git iclean
Detto questo, la tenuta in più di comandi interattivi può essere stancante per utenti esperti. In questi giorni uso solo il già citato git clean -fd
Un modo migliore è usare: git clean
git clean -d -x -f
Questo rimuove i file non tracciati, comprese le directory (-d)
e i file ignorati da git (-x)
.
Inoltre, sostituisci l'argomento -f
con -n
per eseguire un dry-run
o -i
per la modalità interattiva e ti dirà cosa verrà rimosso.
Usa git clean -f -d
per assicurarti che anche le directory vengano rimosse.
È quindi possibile controllare se i file sono davvero andati con lo git status
.
git-clean è quello che stai cercando. È usato per rimuovere i file non tracciati dall'albero di lavoro.
git clean -f -d -x $(git rev-parse --show-cdup)
applica clean alla directory root, indipendentemente da dove lo si chiami all'interno di un albero di directory del repository. Lo uso sempre perché non ti obbliga a lasciare la cartella in cui lavori ora e consente di pulire e commettere direttamente dal luogo in cui ti trovi.
Assicurati che i flag -f
, -d
, -x
corrispondano alle 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.
Ci sono anche altre bandiere disponibili, basta controllare git clean --help
.
git clean -fd
rimuove la directory
git clean -fX
rimuove i file ignorati
git clean -fx
rimuove i file ignorati e non ignorati
può essere usato tutte le opzioni sopra in combinazione come
git clean -fdXx
controlla il manuale di git per ulteriori informazioni
Approccio interattivo dell'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 i file ignorati (aggiungere se necessario)
Nota: aggiungi -n o --dry-run per controllare cosa farà.
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 aggiuntive ma non i file (ad esempio la cartella di build)
git clean -fd
Rimuovi cartelle extra + file ignorati (ma non tutti i file aggiunti di recente)
Se il file non è stato ignorato e non è ancora stato archiviato, rimane. Nota la capitale X.
git clean -fdX
Nuova modalità interattiva
git clean
oh-my-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 nongclean
oltre ai file non tracciati . -
gpristine
hard ripristina le modifiche locali, rimuove le directory non tracciate, i file non tracciati e non usa le regole standard di ignoranza lette da .gitignore (per directory) e $ GIT_DIR / info / exclude, ma usa comunque le regole di ignoranza fornite con le opzioni -e . Ciò consente di rimuovere tutti i file non tracciati, inclusi i prodotti di costruzione. Questo può essere usato (possibilmente in combinazione con git reset) per creare una directory di lavoro incontaminata per testare una build pulita .