Enmendar el penúltimo compromiso

Si encontró un error en su última confirmación, puede volver a comprometer el último compromiso con

git commit --amend 

Pero si ya cometió otra confirmación, ¿cómo reenvía la confirmación antes de esa?


Nota: Supongo, ya lo sabe, que solo debe usar --amend si está seguro de que ningún otro desarrollador ya usó su compromiso de subida

  1. cometer su corrección con

      git commit -a -m "fix commit (este se moverá una línea)" 

    (el post de confirmación no es importante, se volverá obsoleto una vez que haya terminado)

  2. Ahora la magia:
    rebase el HEAD al segundo último commit, pero edite el post de commit antes de esa manera, que cambie la última y la última línea en el editor de posts:

      git rebase -i HEAD ~ 3 

    El editor mostrará los últimos 3 comités como este:

      pick 2a06f16 este fue el último commit
      elija 0dbc5ce el último-uno-commit
      select 2e30418 fix commit (este se desplazará una línea)
    
      # Rebase 011f3d0..2e30418 en 011f3d0
      # ...
    

    intercambie las últimas dos líneas para que el post de confirmación se vea así:

      pick 2a06f16 este fue el último commit
      fixup 2e30418 fix commit (este se desplazará una línea)
      elija 0dbc5ce el último-uno-commit
    
      # Rebase 011f3d0..2e30418 en 011f3d0
      # ...
    
  3. Revisa tu logging con

      git log HEAD ~ 3 
  4. presione la línea de compromiso corregida con + para forzar un nuevo impulso a la twig ya existente con

      git push origen + nombre de twig 

El comentario de @aragaer es una forma más corta de hacer lo mismo:

 git commit -a --fixup=HEAD^ #(or whatever commit to be fixed) 

entonces

 git rebase -i HEAD~3 

y no necesita cambiar nada, por lo que puede cerrar el editor y git se encargará de la reparación.