Domanda

Come si eliminano i file locali non tracciati dall'albero di lavoro corrente?

È stato utile?

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


deleting unwanted untracked files and folder

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 -iquindi 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:

  1. https://git-scm.com/docs/git-reset
  2. Come posso utilizzare 'git reset --hard HEAD' per ripristinare un commit precedente?
  3. Reimposta il ramo del repository locale in modo che sia proprio come HEAD del repository remoto
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html

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.

  1. Pulire File solo [Le cartelle non verranno elencate e non verranno pulite]:$ git clean -i

  2. 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top