Eliminar todas las confirmaciones en una twig después de cierta confirmación

Estoy teniendo dificultades para entender cómo puedo usar rebase / revertir para lograr esto.

Estaba trabajando en mi twig master y después de un cierto compromiso mi software dejó de funcionar. No quería perder los cambios realizados en ese momento y me presionaron a time para alcanzar un hito, así que volví algunos commits con el git checkout y creé una nueva twig llamada working y comencé a impulsar todos mis cambios allí. Más tarde me di count de que estos cambios (hechos en la twig master ) no eran necesarios. Ahora quiero volver a mi twig principal y eliminar todas las confirmaciones después de la confirmación que utilicé para crear mi twig de working y luego fusionar mi twig de working twig master .

Creé una image con un editor de fotos en línea para tratar de explicar lo que bash hacer. Espero que ayude:

captura de pantalla de bitbucket

Quiero save todo después de 5cb967f. deshacerse de todo entre 5cb967f y a0c1de2 (sin include aquellos)

Tienes dos opciones:

Reescribir la historia (destructiva)

Puede usar git-rebase para reescribir el historial, omitiendo estos commits. Puede ejecutar una rebase interactiva. Según su descripción, no estoy seguro de qué es exactamente lo que tiene en master y working , pero supongo que toda la historia (deseada y no deseada) está presente allí.

  git checkout master git rebase -i a0c1de2 

En este punto, su $EDITOR aparecerá con una list de confirmaciones de a0c1de2 a HEAD of master . Puede eliminar las líneas correspondientes a c460070..a3cb10e para eliminarlas del historial.

Su historia será reescrita localmente. Si intenta impulsar este cambio, será una actualización no rápida.

Revertir, conservar historial (no destructivo)

SI prefiere conservar el historial, puede revertir una secuencia de confirmaciones:

 git checkout master git revert c460070..a3cb10e 

Esto creará 7 nuevas confirmaciones, cada una revertir los cambios en estas confirmaciones no deseadas, en order.

Algo sobre el gráfico de la historia es desatinado. Siguiendo el marcado de text en él, lo que quiere es simplemente

 $ git branch -f master working 

porque no había ninguna confirmación de la base de working posterior en el maestro que desea mantener.