2009-08-08 23 views
12

ho fatto git clone git: //foo.git cd foo ... modificare i file .. come posso git clone git: //foo.git AGAIN?

ora voglio ricominciare da capo. Non mi importa di eventuali modifiche che ho già apportato, ma non voglio clonare di nuovo l'intero gigante foo.git, perdo tutte le mie modifiche. come posso git git clone: ​​//foo.git una seconda volta, senza ottenere fatal: destination path 'foo' already exists and is not an empty directory. qual è il comando corretto?

risposta

2

per ripristinare tutte le modifiche, utilizzare:

git checkout . 

file non tracciati (file che non esistevano in origine nella struttura, quelli creati e non editato) non verrà rimosso, però. Per trovare i file non tracciati, utilizzare:

git status 

Quindi eliminarli manualmente.

A proposito, se desideri fare una copia del repository, non è necessario clonare il repository originale, puoi semplicemente clonare quello che hai già sul tuo disco rigido. Andare da qualche parte al di fuori foo, e fare:

git clone /path/to/foo 
9
git checkout . # revert your changes 
git clean -xdf # delete untracked and ignored files 
+1

Nizza ~! Non sapevo di "pulito"! –

+5

Nota: git checkout. ovviamente non funzionerà se non sei nella parte superiore del tuo repository. 'git reset --hard' funzionerà universalmente. – Cascabel

2

è possibile utilizzare "git checkout." o "git checkout HEAD -.", o anche "git reset --hard HEAD" per resettare l'area di lavoro allo stato noto (per registrare stato nell'indice nel primo caso, nello stato registrato in HEAD commit in secondo e terzo caso) .

Per eliminare i file non tracciati che non si desidera mantenere è possibile utilizzare "git clean" (vedere documentation for details).

per ottenere nuovi cambiamenti dal repository remoto si clonato da, usare "git fetch" (o equivalente "aggiornamento remoto git", dopo alcune operazioni di configurazione), o "git pull" (per andare a prendere e unire le modifiche).

-2

È possibile anche utilizzare sempre

rm -rf * 
git checkout master 

Meno comandi da ricordare :)

+0

Questo non funziona se il master contiene già commit locali poiché saranno ancora lì. –

0

Se davvero rovinare tutto:

git clean -df 
git reset --hard HEAD