Ho due rami (e master). Il ramo 2 si basa sul ramo 1 basato sul master. Ho sottoposto il Branch 1 per la revisione, ha apportato alcune modifiche, ho modificato alcune di quelle modifiche nella cronologia e unito il risultato in master.Rebase solo una parte di un ramo
Ora ho bisogno di rebase Branch 2 in cima al master per prepararlo per la revisione/fusione.
Il problema è che il ramo 2 contiene ancora i commit originali di Branch 1, che non esistono più, quindi git viene confuso. Ho provato rebase -i per abbandonare i commit originali di Branch 1, ma i commit di Branch 2 non si basano su master-before-branch-1.
Quello che devo fare è prendere il ramo 2, rilasciare alcuni commit e rifare solo i restanti commit sopra il master in una singola operazione. Ma so solo come fare queste due operazioni in due passaggi distinti.
Come posso rebase parte del mio ramo su un altro ramo, lasciando cadere tutti i commit che non sono in comune discendenza, tranne quelli specificati (ad esempio da HEAD ~ 2 in su)?
Ecco lo stato attuale:
master new branch 1
- - - - - - - - - - - | - - - - - - - - -
\
\ branch 1
\ _ _ _ _ _ _ _
\
\ branch 2
\ _ _ _ _ _ _ _
Quello che voglio finire con:
master new branch 1
- - - - - - - | - - - - - - - - - -
\
\
\
\ branch 2
- - - - - - - - -
Un grafico ASCII che rappresenta lo stato del repository potrebbe essere d'aiuto. A prima vista, direi che stai cercando ['git rebase --onto'] (https://git-scm.com/docs/git-rebase). Vedi se questo aiuta: http://stackoverflow.com/questions/28715619/how-can-i-rebase-part-of-a-branch-to-the-master-branch/28715930#28715930 – Jubobs
Meglio! Vedi anche la parte superiore di http://stackoverflow.com/questions/25488138/move-initial-commits-off-master-to-another-branch-in-git/25490288#25490288 – Jubobs
git rebase - quasi ha funzionato per me . Ho fatto 'git rebase --onto master --root HEAD ~ 1', ma per qualche ragione ha scelto tre commit da portare con me invece di solo 'HEAD ~ 1' e verso l'alto. Inoltre, invece di ridefinire il mio ramo, ora sono nello stato di HEAD distaccato. – Puppy