2012-01-10 10 views
5

Tengo una rama llamada feature y tiene algunas confirmaciones. La rama y sus confirmaciones siguen siendo locales para mi máquina (no han sido push ed a un repositorio público). La gráfica se parece aCambiar el punto de ramificación

A---B---C---D---E---F---G master 
        \ 
        P---Q---R feature 

Ahora me di cuenta de que yo he hecho la rama feature fuera de una anterior cometen en master. Digamos commit C. En otras palabras, la gráfica debe parecerse

A---B---C---D---E---F---G master 
     \ 
      P---Q---R feature 

Lo que estoy tratando de hacer, en esencia, es revertir compromete D, EF y fuera de la rama feature. Sí, podría simplemente revert comprometer uno a la vez, pero hay demasiados para revertir; la imagen de arriba es solo una ilustración.

Respuesta

6

Lo que quieres hacer es un rebase. Para recoger las confirmaciones P, Q y R y aplicarlos en la parte superior de C, se ejecuta:

git rebase --onto C F feature 

Consulte la página de manual de git-rebase para más información.

+0

Perfecto. Resulta que no leí "lo suficiente" en la página del manual. Yo hice una "rebase" antes de publicar la pregunta. Sin embargo, eso solo decía que 'commit C' ya existía. La salsa secreta es el interruptor '--onto'. Gracias –

Cuestiones relacionadas