2009-08-31 10 views
31

Ho un fork di un progetto su github in cui il tronco principale è stato taggato di recente. Voglio estrarre il codice dalla revisione taggata nella mia forcella. Come potrei farlo?Git: come faccio a inserire una revisione taggata nella mia forcella?

+0

'pull' - come in unione? –

+0

Sono un newbie git quindi non conosco tutti i termini ancora ... Voglio unire il codice taggato dal trunk principale alla mia fork. Se questo è ciò che git chiama un "unione", allora sì :) –

+0

Si potrebbe anche voler controllare questa domanda http://stackoverflow.com/questions/881092/how-to-merge-a-specific-commit-in- git – Vanuan

risposta

42

Una volta che hai il tag nel repository locale si può fare qualcosa di simile

git merge tags/yourtag

Se non si hanno i tag "tronco" a livello locale, si può scaricare utilizzando

git fetch remote-url "refs/tags/*:refs/tags/*"

o impostando il telecomando

git remote add upstream remote-url

e andare a prendere la roba utilizzando

git fetch -t upstream

credo, però, utilizzando

git remote update

avrà effetto simile.

+1

"Una volta che hai il tag nel repository locale" - come faccio questo (sono davvero un newbie git). Qual è la differenza tra "git merge" e "git fetch" e "git pull"? –

+1

@Jon: la seconda istruzione qui recupererà tutti i tag dal telecomando. Nota che puoi anche fare 'git fetch --tags '. – Cascabel

+2

@Jon: 'git pull' è una combinazione di' git fetch' e 'git merge'.Usa 'git fetch' per recuperare informazioni (posizioni di ramo, commit, ecc.) Dal repository remoto, quindi usa' git merge' per unire il ramo remoto appropriato nel ramo locale corrente. Puoi specificare il ramo remoto facendo 'git pull ', oppure puoi specificare sia il comando remoto che il ramo da unire usando il ramo 'dei parametri di configurazione. .remote' e 'branch. .merge'. – Cascabel

13

I può essere proiettando, ma credo che il problema di Jon era uguale al mio:

ho biforcato qualcun altro progetto (su GitHub), e aveva bisogno di puntare il maestro ramo della mia forchetta ad una specifica tag del loro progetto, ignorando efficacemente tutti gli sviluppi successivi. (Perché? Dopo quel tag, il loro progetto ha abbandonato la funzionalità che la mia forcella dipende e deve sviluppare. Quindi sono ancorato a quel momento nella storia. Triste ma vero.)

In questo esempio, il tag è stato chiamato 0.6.3 . Tutto quello che dovevo fare era cd al mio clone locale (della mia forchetta) e fare

git reset --hard 0.6.3 
git push --force 

Poi ho verificato su GitHub che la mia forchetta riflette lo stato del codice a loro tag!

Problemi correlati