2012-09-18 11 views
11

(Questo sembra che dovrebbe essere molto facile da fare, ma sto arrivando fino vuoto sulle ricerche finora.)Git - rebasing ad un particolare tag

ho un corpo di codice da un monte fonte, con varie versioni taggate su vari rami.

Sto lavorando al mio ramo "sviluppo" basato sul tag "v1.0". molte versioni sono uscite da allora, ma mentre "v2.0" è interessante, voglio rebase il mio ramo di sviluppo a "v1.5" e continuo a lavorare lì (presumo che non preveda di alimentare quello backstream). Forse più tardi lo rebase di nuovo a "v2.0".

(A tal fine assumere "v1.x" s sono tutti i tag sullo stesso ramo. Per il credito supplementare possiamo assumere "v2.0" è una tag su un altro ramo.)

ero in grado di creare il ramo "sviluppo" iniziale basato sul tag "v1.0" abbastanza facilmente, ma rebase sembra funzionare solo con i rami. Non è possibile un rebase utilizzando i tag? In caso contrario, qual è il modo giusto per farlo (in modo da avere esattamente lo stesso effetto della ridefinizione di un determinato tag)?

+0

È possibile ribaltare _to_ un tag. Se non puoi farlo, ti preghiamo di includere il comando che hai usato. –

+0

Hmm! Lo stavo facendo con TortoiseGit (che non offre l'opzione di rebasing con i tag - o lo fa?) E poi l'ho provato in git bash e non ha avuto alcun effetto ... ma a quanto pare ho avuto un errore di sintassi (Ho provato "git rebase sviluppare v1.5" che non era corretto ... Ho appena usato "git rebase v1.5" con sviluppo estratto e sembra aver funzionato). Edit: In realtà, l'ho fatto per una ragione, che era un esempio non proprio buono che ho trovato altrove. – MartyMacGyver

+0

Penso che il checkout e il rebase sia il modo standard per farlo. –

risposta

13

Si potrebbe utilizzare il seguente comando:

git rebase --onto v1.5 v1.0 develop 

La develop parte del comando deve essere un ramo, ma gli altri due possono essere quello che vuoi.

+0

Sembra che abbia storpiato originariamente la sintassi, portando così alla mia domanda. E l'apparente assenza di questa funzionalità nell'opzione di rebase di Tortoisegit mi ha portato a chiedermi se fosse possibile. Tuttavia, questo thread ha dimostrato di essere più informativo di quanto mi aspettassi. Grazie! – MartyMacGyver

+0

Follow-up: ho provato questo andando avanti e indietro e viceversa. Questo in realtà si è rivelato meno complicato del mio test originale, unendo branch-to-branch usando TortoiseGit (che, poiché il tag antenato non poteva essere specificato, lanciava inutili "conflitti" di fusione che avrebbero potuto essere risolti automaticamente con le informazioni aggiunte proprio come il git della riga di comando fa. È ancora un software a portata di mano, ma a quanto pare non gestisce i rebases nel modo più completo possibile. – MartyMacGyver