Git: ¿cómo fundir un compromiso con otro compromiso?

Digamos que tengo un historial de commit de git como este (más nuevo -> anterior):

C -> B -> A

después del compromiso de C, me di count de que hay algo mal con A. Tal vez sea un caso de testing que se supone que debe estar en ese compromiso, pero en realidad no estaba allí. Entonces, ¿cómo puedo lidiar con esta situación? Haga un nuevo compromiso y derrítelo en A? ¿Cómo?

Problema resuelto:

  1. git checkout A
  2. git checkout -b fix
  3. editar
  4. git add files
  5. git commit --amend
  6. git rebase fix master

Muchas personas te rebase --interactive (que podría ser la solución), pero si planeas cambiar algunas líneas que han sido modificadas en confirmaciones B o C, eso será un infierno para usar.

La otra solución podría ser:

  1. Crear y pagar una sucursal en commit A
  2. Modifique el compromiso A o cree un nuevo compromiso (dependa de qué sentido dé a lo que desea hacer)
  3. Verifica la twig anterior que todavía está en commit C
  4. Use rebase --onto para rebase solo commit B y C en la twig recién creada (que podría eliminar después)