2013-05-14 12 views
16

git ha qualche pull/checkout 'opzione nucleare' per ottenere il repo? Non mi importa di eventuali conflitti, non ho bisogno di nessuna delle mie cose locali, voglio solo le merci in modo che io possa lavorare.git: dammi il repo, nuke tutto locale, non mi interessa

[modifica] per chiarire i miei problemi:

$ git pull 
error: Your local changes to the following files would be overwritten by merge: 

<...files I couldn't care less about...> 

Please, commit your changes or stash them before you can merge. 
error: The following untracked working tree files would be overwritten by merge: 

<...more files I couldn't care less about...> 
+1

'git clean -xdf & git reset --hard & git pull' – vcsjones

+0

quale dose pulire -xdf fare? –

+2

@LoganBender 'clean -xdf' rimuove tutti i file e le directory che non sono controllate da Git (e non gli interessa se sono normalmente ignorati da Git) –

risposta

12

Meglio per voi capire il vari comandi git quindi per trovare quello di cui hai bisogno "proprio ora", poiché ti verrà in mente questa situazione molte volte e imparerai solo frammentario mentre borbottii e incolperai git.

EDIT: Sono andato avanti e ho provato tutte le opzioni e questo dovrebbe farlo. Grazie a pauljz nei commenti.

git clean -df # remove untracked files AND directories 
git reset HEAD --hard # revert any uncommitted changes 

Quanto sopra dovrebbe essere tutto il necessario.

Altre opzioni:

git pull -f # replace local files even if you have unpushed commits. 

o

git reset HEAD --hard # remove unchanged, uncommitted files 
git pull 

o

git clean -f # remove untracked files (uncommitted files) 
git pull 
+0

'git clean -f -d' è probabilmente da aggiungere, per cancellare file e directory non tracciati. – pauljz

+0

clean -f ha azzerato il primo errore "errore: le tue modifiche locali ai seguenti file verrebbero sovrascritte dall'unione:" ma non l'errore dei file non tracciati –

+0

@LoganBender do 'git reset --hard' too, e quindi prova' git pull' e se questo non funziona 'git pull -f' –

4

Si può sempre cancellare l'intera cartella del vostro repo esistente, e quindi creare una nuova con git clone

+1

Questa mi sembra l'idea giusta: cd ..; rm -rf ; git clone

+1

Questo può richiedere molto tempo a seconda delle dimensioni del repo/connessione Internet, è piuttosto dispendioso in generale ed è praticamente il metodo "mi arrendo".Uno dovrebbe piuttosto imparare i comandi per resettare tutto correttamente. Poi diventa più facile la prossima volta che devi farlo. –

+0

Questo è ciò che ha funzionato meglio per me. Ho provato una miriade di altri comandi suggeriti qui e in altri thread, e questa è l'unica cosa che ha chiarito il "cambiamento" git percepito, ma non esisteva. – Syndog

2

A volte i passaggi elencati nelle altre risposte non funzionano, perché [rant redatto]. In tal caso, l'opzione "bomba nucleare tattica" è quello di:

(se necessario) reset non impegnati modifiche locali in modo da poter passare:

git reset --hard HEAD 

Crea e passare ad una diversa sezione locale:

git checkout -b tempBranch 

Forza eliminare la (copia locale del) ramo con i problemi:

git branch -D targetBranch 

Checkout e interruttore ad una copia pulita del ramo bersaglio da remoto:

git checkout -b targetBranch origin/targetBranch 

Pulire eliminando la sezione locale temporanea che hai fatto:

git branch -D tempBranch 

Se questo non funziona, l'opzione "nucleare strategico" è per eliminare il repository e clonarlo di nuovo.