Aquí se explica cómo hacerlo con Magit .
Digamos que commit ed417ae es el que quieres cambiar; contiene dos cambios no relacionados y está enterrado bajo una o más confirmaciones. Presione ll
para mostrar el registro y navegue hasta ed417ae:

Luego r
presione para abrir la ventana emergente rebase

y m
para modificar el compromiso en el punto.
Observe cómo @
hay ahora en la confirmación que desea dividir; eso significa que HEAD ahora está en esa confirmación:

Queremos mover HEAD al padre, así que navegue al padre (47e18b3) y presione x
( magit-reset-quickly
, vinculado o
si está usando evil-magit
) e ingrese para decir "sí, me refería a confirmar en el punto". Su registro ahora debería verse así:

Ahora, q
presione para ir al estado normal de Magit, luego use el u
comando regular de unstage para destrabar lo que no sucede en el primer commit, confirme c
el resto como de costumbre, luego tage s
y c
omita lo que sucede en el segundo commit, y cuando haya terminado: golpeado r
para abrir la ventana emergente de rebase

y otro r
para continuar, ¡y listo! ll
ahora muestra:
