2012-03-02 18 views
5

Poiché un ramo è più o meno solo un tag, che si sposta automaticamente sul nuovo commit, mi chiedo se posso modificare questo "tag".git - sposta il "tag" del ramo su un altro commit?

Esempio:

   master 
A -- B -- C -- D 

git checkout master sarebbe lo stesso di git checkout D

Posso cambiare padrone al punto di commettere B?

master 
A -- B -- C -- D 

git checkout master sarebbe ora essere la stessa di git checkout B

Use Case

immaginare qualcuno che ha spinto un unico commit al repository on-line. Quando faccio git fetch, ottengo questo commit locale, ma il mio ramo principale punta ancora al commit prima, mentre l'origine/il master punta al nuovo commit. Voglio solo spostare il ramo master locale nello stesso commit dei punti di origine/master.

Quindi, non avrei dovuto unire.

Grazie per il vostro aiuto

+0

Nel vostro scenario push, si sarebbe semplicemente unire 'origine/master'. Dal momento che non hai nessun commit locale, sarà risolto come un lontano avanti – knittl

risposta

1

questo dovrebbe funzionare:

git reset --hard origin/master 
7

ricreare il ramo per puntare il commit

git branch -f master D 

Utilizzando git branch invece di git reset --hard anche conserva la directory di lavoro.

+1

Sembra che sia giusto, ma lo hai resettato dove già sta usando questo comando. Suppongo che tu stia andando: git branch -f master B. –

+1

Questo mantiene lo stato di tracciamento dei rami? – everett1992

+0

Non ne sono sicuro, ma immagino di no. – knittl

0

ho trovato un'altra soluzione per questo:

git fetch 
git checkout origin/master 
git branch -d master 
git branch master 

E 'più logico per me

+0

Nota che sarai nella condizione _detached head_ dopo la sequenza di comandi. – knittl