2012-10-01 18 views
10

Ho scaricato un repository conChe cos'è il comando "reset" per un repository clonato git?

git clone <address> 

ho fatto qualche modifica e ho modificato alcuni file, ora voglio scartare tutto e tanto per essere sicuro che quello che ho sul disco non è altro che il telecomando originale versione del codebase: qual è il comando giusto?

risposta

11

Supponendo che il telecomando è chiamato origine

git reset --hard HEAD 
git checkout origin/master 
git branch -D master 
git checkout -b master 

Quello che fa è:

  1. (opzionale se git status dice nessun file modificati) Eliminare qualsiasi file modificati sul disco (è per questo che reset --hard)

  2. Verificare il ramo principale remoto (nota: si sarà in uno stato "testa grattata")

  3. Eliminare il master sezione locale (buttare via tutte le modifiche locali)

  4. chiamata l'attuale capo come la nuova filiale master

Ora probabilmente si vuole fare qualcosa di leggermente diverso ... vale a dire non buttare via le tue modifiche, semplicemente mettile su un altro ramo chiamato ...dopo tutto si sa mai quando avrete bisogno di nuovo

git checkout -b my-silly-changes 
git branch -D master 
git checkout -b master origin/master 

che salva il vostro attuali cambiamenti in un nuovo ramo locale chiamato my-silly-changes e poi rimuove il vecchio ramo locale chiamato master e, infine, la ricrea dalla testa a distanza.

+6

Si dovrebbe anche fare un 'git clean -xfd' per sbarazzarsi di tutti i file non tracciati (creare prodotti, ecc.) –

+0

cool non sapeva di quello –

+2

I primi quattro comandi, se corretti, sono inutilmente prolissi. Se si è in 'master', solo' git reset --hard origin/master' farà lo stesso dei quattro comandi. Ancora, +1 per aver menzionato l'opzione di creare una filiale locale. – sleske

0

Se non hai commesso nulla, allora git reset --hard è sufficiente.

Here è una buona risorsa che spiega come funziona git reset con le sue diverse modalità di lavoro (--hard, --mixed e --soft).

responsabilità:

git reset --hard è un'operazione pericolosa. Rimuove tutte le modifiche non salvate dall'albero di lavoro e non può essere annullato.

+0

* "Voglio eliminare tutto e solo essere sicuro che quello che ho sul disco non è altro che la versione remota originale della base di codice" * - Il metodo sopra sembra lascia i file sul file system che non facevano parte del clone, come gli script 'configure' che sono stati generati da' configure.ac' con 'autoreconf'. Lascia fare a Git per svolgere un compito semplice e renderlo difficile all'impossibile. – jww

1

Se si è certi di voler eliminare tutti i file, e perdere tutte le modifiche, si può fare (!):

git reset --hard origin/master 

Questo ripristinerà lo stato della vostra copia locale del "maestro "branch e della tua copia di lavoro sull'ultima versione che hai recuperato dal tuo upstream (telecomando originale).

Nota: Questo presuppone che

  • il repository monte si chiama "origine" (il valore predefinito per git clone)
  • si sta lavorando in un clone del master filiali remote

Se si sta lavorando in un ramo diverso da "master", regolare il comando:

git reset --hard origin/branch1 
-1

Potrebbe anche essere necessario fare qualcosa di simile a:

git branch --set-upstream-to=origin/master master

Dove:

origin/master

è la filiale remota che si desidera puntare, e

master

è la diramazione locale da cui si desidera lavorare da

Problemi correlati