¿Qué pasa si me doy count de que debería haber cometido una edición hace cinco commits?

Este es un problema común para mí. Realizo unos cinco commits y luego descubro que un código de debugging que se volvió irrelevante o un código no deseado de un algorithm usado anteriormente se mantiene. Enmendarlos a HEAD no siempre tiene sentido y hacer un nuevo compromiso para un cambio tardío de una línea se siente desorderado.

Las soluciones que conozco incluyen lo anterior y verificar el compromiso, la bifurcación, la edición y la fusión anteriores. Esto funciona bien, pero me pregunto si existe una solución más idiomática o más elegante.

Puede usar la database interactiva para regresar y editar una confirmación específica, siempre y cuando el historial de reescritura esté bien (básicamente, siempre que no haya compartido las confirmaciones con otra persona / el público).

Para hacerlo, primero encuentre el hash de la confirmación que desea editar. Luego, dile a Git que haga una rebase interactiva a partir de la confirmación anterior:

git rebase -i <SHA>~1 

El ~1 es importante: le dice a Git que haga reference a la confirmación antes del SHA que especificó.

Aparecerá un editor con una línea para cada una de sus confirmaciones, comenzando por la que desea editar. Cambie la pick de ese compromiso para edit , luego guárdelo y salga del editor.

Git aplicará esa confirmación y luego pausará. A continuación, puede editar los files para eliminar el código de debugging, git add y git commit --amend para editar la confirmación.

Después, use git rebase --continue aplicando los otros commits en order, terminando en el lugar donde comenzó (pero con un nuevo set de commits que no tiene su código de debugging).

Puedes usar rebase si aún no has empujado o retirado.

Aplastamiento con rebase