Git rebase: combina commits no subsecuentes

por ahora, sé que hay una buena manera de combinar commits y cambiar el post de commit utilizando 'git rebase –interactive'

Teniendo la siguiente situación:

$ git rebase --interactive HEAD^^^^ pick 5b7c140 commitA pick 40ffd7c commitB pick 5e7647d commitC pick 78bea2d commitD Rebase [...] 

También existe la posibilidad de manejar los siguientes requisitos:

¿Combinando commitA y commitC y commitB y commitD con los nuevos commits cAC y cBD?

Es posible: también puede reorganizar el order de las confirmaciones con la rebase interactiva:

 pick 5b7c140 commitA squash 5e7647d commitC pick 40ffd7c commitB squash 78bea2d commitD 

o

 pick 5b7c140 commitA fixup 5e7647d commitC pick 40ffd7c commitB fixup 78bea2d commitD 

La diferencia entre los dos es que squash permite editar el post de confirmación para las nuevas confirmaciones, mientras que la fixup solo descarta el segundo post de confirmación, dejando el post de confirmación de pick precedente para la confirmación combinada. (Si su editor se inicia lo suficientemente rápido, entonces tener el hábito de simplemente elegir squash le da una buena oportunidad para revisar el post de confirmación incluso si cree que probablemente no necesite usar partes del post de la confirmación de fixup ).

Existe la posibilidad de un conflicto de rebase, si su commitB y commitC cambian una misma parte de un file. A menudo, estos pueden ser fácilmente resueltos.