2013-01-24 34 views
18

Diciamo in master Ho una funzione disabilitata. Io lavoro su quella funzione sul ramo feature, quindi ho uno speciale commit $ lì che abilita solo quella funzione. Ora voglio unire le modifiche apportate a feature in master, ma mantenere l'abilitazione fuori commit. Così è comeGit: spostare un commit "in primo piano"

main: A--B--X--Y 
feature: A--B--$--C--D 

Quindi diciamo che voglio farlo, spostando il $ commit sulla parte superiore della caratteristica:

new feature: A--B--C--D--$ 

Come potrei fare per fare questo?

risposta

20

git rebase -i B e quindi spostare $ alla fine dell'elenco che si visualizza nell'editor. Inizia come prima riga nel file che si apre. Potresti anche cancellare completamente quella riga, che lascerà semplicemente uscire dalla cronologia del tuo ramo.

+0

Cool grazie! È così chiaro ora che dovrei usare rebase, ho cercato di risolverlo con cherry-pick prima, per qualche motivo. –

+0

@AdrianPanasiuk, potresti usare anche cherry-pick, ma sarebbe molto più difficile, probabilmente. –

5

Se si desidera mantenere l'impegno nello stesso ordine su feature, è necessario creare un nuovo ramo ed eseguire quanto segue. In caso contrario, basta fare questo su feature

git rebase -i <sha for commit B> 

Sposta impegnarsi $ al fondo della lista

git checkout master 
git rebase feature <or the other branch name> 

Non era chiaro per me sulla questione, ma se non avete voglia $ a tutti, piuttosto che spostarlo cancellarlo dopo git rebase -i Anche se si vorrà farlo su un nuovo ramo in modo da non perderlo. Come stai cambiando la storia.

Si presume inoltre che il ramo feature non sia stato inviato a un remoto in quanto la cronologia di riscrittura non è buona.

Problemi correlati