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 o git clean -fd
  • Per rimuovere i file ignorati, esegui git clean -f -X o git clean -fX
  • Per rimuovere i file ignorati e non ignorati, esegui git clean -f -x o git 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 non gclean 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 .




git-branch