2013-07-01 8 views
118

Sul mio ramo ho avuto alcuni file in .gitignoreI seguenti file non monitorate albero di lavoro sarebbero stati sovrascritti da fusione, ma non mi importa

Su un ramo diverso quei file non sono.

Voglio unire il ramo diverso al mio e non mi interessa se quei file non sono più ignorati o meno.

Purtroppo ottengo questo:

The following untracked working tree files would be overwritten by merge

Come faccio a modificare il mio comando a trazione per sovrascrivere i file, senza di me dover trovare, spostare o eliminare i file me stesso?

+1

possibile duplicato di [Force git per sovrascrivere i file locali su pull] (http://stackoverflow.com/questions/1125968/force-git-to-overwrite-local-files-on-pull) –

+0

possibile duplicato di [ errore: i seguenti file dell'albero di lavoro non tracciati verrebbero sovrascritti da checkout - git] (http://stackoverflow.com/questions/4858047/err-the-following-untracked-working-tree-files-would-be-overwritten-by -checko) –

+0

Possibile duplicato di [I seguenti file dell'albero di lavoro non truccato verrebbero sovrascritti dalla cassa] (https://stackoverflow.com/questions/4858047/the-following-untracked-working-tree-files-would-be-overwritten -by-checkout) – nelaaro

risposta

228

Il problema è che non si sta monitorando i file in locale, ma i file identici sono tracciati da remoto in modo al fine di "tirare" il sistema sarebbe costretto a sovrascrivere i file locali che non sono controllati dalla versione.

Prova esecuzione

git add * 
git stash 
git pull 

Ciò tenere traccia di tutti i file, rimuovere tutte le modifiche locali a quei file, e quindi ottenere i file dal server.

+28

'git add -A.; git stash' ha funzionato per me. La variante 'git add *' si è lamentata dei percorsi ignorati. – imsky

+5

Ho provato git add., Git stash, git pull. Ha funzionato, ma non riesco ancora a capire perché? –

+1

Per me, ho avuto un file remoto che è stato rintracciato e ho avuto un file con lo stesso nome nel mio repository locale che non è stato tracciato. Quindi, se si aggiunge il file locale alle modifiche e quindi si esegue il pull, il file remoto dovrebbe sovrascrivere il file locale. – userFog

29

Si può provare il comando per cancellare i file non monitorate dal locale

git clean -d -f "" 

dove -d può essere sostituire con le seguenti:

  • -x significa che i file ignorati vengono rimossi, così come file sconosciuti a git.

  • -d significa rimuovere le directory non tracciate oltre ai file non tracciati.

  • -f è necessario per forzare l'esecuzione.

questo è il link che può essere utile pure.

+9

Vorrei aggiungere '-i' per la modalità interattiva. Oltre a cancellare la directory indesiderata ho anche cancellato le mie impostazioni utente per il progetto :-( – dumbledad

+5

Vale la pena analizzare i commenti su [una risposta simile] (http://stackoverflow.com/a/8362346/575530) come '-x' può far male – dumbledad

+3

Ma questo è un compito molto pericoloso, e non annullabile, potresti perdere molti file! ATTENZIONE! –

11

Si può provare che il comando

git clean -df 
+4

a cosa serve eliminare le directory non tracciate? .. possono essere utili, lo sai. – zhekaus

23

Gli unici comandi che hanno lavorato per me sono stati:

git fetch --all 
git reset --hard origin/{{your branch name}} 
+1

Va notato che questa risposta è necessaria se hai rimosso i sottomoduli e li hai letti come librerie nel repository originale. Avevo bisogno di una risposta e tutto ciò ha funzionato. – Routhinator

5

Se si considera utilizzando il flag -f si potrebbe eseguire prima come un funzionamento a secco.Basta che si sa in anticipo che tipo di situazione interessante si finirà per il prossimo ;-P

-n 
--dry-run 
    Don’t actually remove anything, just show what would be done. 
7

rimuovere tutti i file non monitorate:

git clean -d -fx "" 
+0

Perché negativo negativo, per favore spiega ... –

3

Oltre alla risposta accettata si può ovviamente rimuovere i file se non sono più necessari specificando il file:

git clean -f '/path/to/file/' 

ricordarsi di eseguire con il flag -n prima se si desidera vedere quali file git clean rimuoveranno. Si noti che questi file verranno eliminati. Nel mio caso non mi importava di loro comunque, quindi questa era una soluzione migliore per me.