git absorb: la herramienta que aplica automáticamente los cambios a los commits correctos

Fuentes: git absorb: automatic fixup commits for git

git absorb es una utilidad de línea de comandos escrita en Rust que automatiza la creación de commits "fixup!" en Git, replicando para este sistema de control de versiones la funcionalidad que Facebook popularizó con hg absorb en Mercurial. Su propósito es resolver una fricción habitual en el trabajo con ramas de características: cuando un revisor señala varios errores a corregir, el desarrollador debe localizar manualmente el SHA de cada commit original para crear un fixup con git commit --fixup, o bien recurrir a un rebase interactivo. git absorb elimina ese paso: a partir de los cambios añadidos al área de staging, analiza cada hunk, recorre en orden los últimos commits (por defecto los diez más recientes) y comprueba si el parche conmuta con cada uno. Si no conmuta, infiere que ese commit es el padre adecuado y genera un fixup! dirigido a él; si conmuta con todos, deja el cambio sin confirmar y muestra una advertencia.

La herramienta ofrece el flag --and-rebase, que además integra automáticamente los fixups mediante git rebase -i --autosquash. En caso de duda, el usuario puede revisar los commits generados con git log y ejecutar el autosquash manualmente. Para revertir la operación basta con git reset --soft PRE_ABSORB_HEAD.

Está disponible como artefacto binario para Windows, macOS y Linux, y empaquetada en distribuciones como Arch, Debian, Fedora, Homebrew, Nixpkgs y Void Linux, entre otras. También puede instalarse con cargo install git-absorb, aunque en ese caso no se incluyen las páginas de manual. Su desarrollo se realiza en GitHub bajo licencia open source, con una hoja de ruta que incluye detección de copiado/renombrado, carga de hunks en streaming y bloqueo del índice.