2011-11-25 12 views
5

ho fatto un check-out ad un precedente impegno:"Attualmente non in qualsiasi ramo" dopo aver fatto un commit

git checkout 12345 

Poi di nuovo all'ultima commit:

git checkout 56789 

E poi continuato commesso e mi 'm:

Non disponibile su nessuna filiale.

Forse, avrei dovuto fare:

git checkout master 

Dopo la prima cassa, invece di puntare ad un commit id.

Ancora, qualche idea su come ottenere il mio ultimo commit nel ramo master (che è un po 'di commit dietro)?

Grazie

risposta

10

Quando si esegue git checkout 12345, non ci si troverà nello stato di diramazione. Non farlo. Questo è inteso per l'ispezione del commit piuttosto che lavorare in esso.

Se siete su master e desidera ripristinare il tuo padrone a commettere che si voleva, utilizzare git reset 12345 (o fornire --hard) Se si voleva ramo, utilizzare git checkout -b <name> <sha1> per creare una filiale in quel punto e iniziare a lavorare lì.

Allo stesso modo, mentre tornando, come lei ha ricordato, che avrebbe dovuto fare git checkout master

Ora che avete impegnato oltre 56789, annotare il commit su 56789, e maestro poi checkout, e fare:

git reset <commit_over_56789> 
+0

Trovo la tua risposta più informativa. Grazie :-) –

+0

+1. 'Git checkout master' era tutto ciò di cui avevo bisogno. –

4

Se ho capito correttamente, il branch master è dietro il più recente commit (56789), e si vuole fare in modo che puntare a questo.

Se questo è il caso, facendo:

git branch -f master 56789 

sarà ripristinare il ramo principale per puntare a quel commit. git checkout master dopo, e dovresti essere a posto.

+0

Si può anche semplicemente 'git checkout master && git rebase 56789', assumendo che la copia di lavoro sia pulita. – Romain

+0

Perfetto. Grazie mille, Mat e Romain! –

+0

Grazie mille, ha funzionato per me. Personalmente trovo questa risposta più utile dell'altra. –

Problemi correlati