git: elimina la confirmación simple de la twig principal

Accidentalmente puse algunos cambios (cometer C) para master lugar de twig. Más tarde creé otras twigs basándose en estos cambios ( branch1 y branch2 ). Ahora me gustaría eliminar los cambios introducidos por la confirmación C de todas las twigs (y moverlo a la branch-C ). ¿Es posible?

Situación actual:

 A - B - C - D - - L - M - L - M master | \ | - N - O - P branch2 \ - E - F - G branch1 

Situación Desidenetworking:

  - C branch-C / A - B - D - - L - M - L - M master | \ | - N - O - P branch2 \ - E - F - G branch1 

Debe volver a establecer la base de cada bifurcación, ya que cada confirmación hace reference a toda la cadena de confirmaciones principales a través del hash.

Puedes hacer algo como

 for br in master branch1 branch2 do git rebase --onto BC "$br" done git branch branch-C C 

El ciclo tal como está escrito funcionará sin problemas solo si no hay conflictos. En general, recomendaría ejecutarlo a mano.

Además, si lo haces a mano, puedes optimizar un poco. P.ej

 git rebase --onto BD master git rebase --onto Dnew D branch1 git rebase --onto Lnew L branch2 

donde Dnew y Lnew son las versiones Lnew de D y L respectivamente.

Descargo de responsabilidad: no lo he probado; por favor, pruébelo primero en una copy de su repository.