Git fix last commit: rebaselo con el anterior

No sé exactamente cómo describirlo en términos de Git, pero lo que hago es:

  • Realizo algunos cambios, me comprometo con un commit "Agregar un cuadro de búsqueda"
  • Me di count de que faltaba un paréntesis en mi código, lo cambié y lo escribí como "corregir"
  • Luego git rebase -i HEAD~2 :

     pick 34ea25a Add a search box f 9c4b283 fix 
  • Guarda el file

  • Y sí, tengo una buena historia

Pero me gustaría automatizar eso, entonces ¿cómo puedo usar git rebase sin tener que abrir un editor?

En primer lugar, si sabes que vas a aplastar tu próximo commit cuando lo hagas, puedes usar git commit --amend en git commit --amend lugar. Aquí hay un flujo de trabajo de ejemplo:

 $ git commit -am "Add a search box" $ vim file1.c # fix something $ git commit --amend file1.c 

El modo interactivo de Git, como su nombre lo sugiere, está diseñado para uso interactivo. Sin embargo, puede hacerlo utilizando la variable de entorno GIT_SEQUENCE_EDITOR o la opción de configuration sequence.editor . Ambos funcionan de la misma manera: puedes establecerlos en algún script que obtenga un file rebase interactivo estándar como input. Su salida se usará para la rebase actual. Puedes ver alguna sugerencia sobre cómo usarlo en esta pregunta .

Mi primera solución es simple y solo funciona si tienes una twig limpia, es decir, no hay files sin seguimiento, y solo para la última confirmación.

Agregue un script de shell a una carpeta en su PATH como ~/bin y ~/bin nombre git-rewordgit-reword ejecutable.

 #!/bin/bash if [ -z "$1" ]; then echo "Message missing" exit 0 fi git reset --soft HEAD^1 git commit -am "$1" 

En su repository ahora puede escribir

 $ git reword "new message"