Cambiar el mensaje de confirmación antiguo en Git


Estaba tratando de editar un viejo mensaje de confirmación como se explica aquí.

La cosa es que ahora, cuando intento ejecutar rebase -i HEAD~5 dice: interactive rebase already started.

Entonces intento: git rebase --continue pero tengo este error:

error: Ref refs/heads/master is at 7c1645b447a8ea86ee143dd08400710c419b945b but expected c7577b53d05c91026b9906b6d29c1cf44117d6ba
fatal: Cannot lock the ref 'refs/heads/master'.

¿Alguna idea?

Author: Pablo Fernandez, 2009-12-11

3 answers

Dice:

Cuando guardes y salgas del editor, te rebobinará a esa última confirmación en esa lista y te soltará en la línea de comandos con el siguiente mensaje:{[18]]}

$ git rebase -i HEAD~3
Stopped at 7482e0d... updated the gemspec to hopefully work better
You can amend the commit now, with

No significa:

Vuelve a escribir git rebase -i HEAD~3

Trate de no escribiendo git rebase -i HEAD~3 al salir del editor, y debería funcionar bien.
(de lo contrario, en su situación particular, un git rebase -i --abort podría ser necesario para restablecer todo y permitir volver a intentarlo)


Como Dave Vogt menciona en los comentarios, git rebase --continue es para ir a la siguiente tarea en el proceso de rebase, después de haber modificado la primera confirmación.

También, Gregg Lind menciona en su respuesta la reword comando de git rebase:

Al reemplazar el comando "pick" con el comando "edit", puede decirle a git rebase que se detenga después de aplicar ese commit, para que pueda editar los archivos y / o el mensaje de confirmación, modifique la confirmación y continúe rebasando.

Si solo desea editar el mensaje de confirmación para una confirmación, reemplace el comando "pick " con el comando "reword", sinceGit1.6.6 (January 2010) .

Hace lo mismo que 'edit' hace durante un rebase interactivo, excepto que solo le permite editar el mensaje de confirmación sin devolver el control al shell. Esto es extremadamente útil.
Actualmente si quieres limpia tus mensajes de confirmación tienes que:

$ git rebase -i next

Luego establece todas las confirmaciones en 'editar'. Luego en cada uno:

# Change the message in your editor.
$ git commit --amend
$ git rebase --continue

Usar ' reword' en lugar de 'edit' le permite omitir las llamadas git-commit y git-rebase .

 97
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:07

FWIW, git rebase interactive ahora tiene una opción "reword", lo que hace que esto sea mucho menos doloroso!

 45
Author: Gregg Lind,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-26 15:42:57

Puede hacer esto de la siguiente manera como @gregg dijo que use word reword

git rebase -i HEAD~n

Aquí n es la lista de las últimas n confirmaciones.

Por ejemplo, si utiliza git rebase -i HEAD~4

pick e459d80 Do xyz
pick 0459045 Do something
pick 90fdeab Do blah blah blah
pick 90fdeab Do pqr

Ahora reemplace word elija con cambie la palabra para confirmar el mensaje que desea editar.

    pick e459d80 Do xyz
    reword 0459045 Do something
    reword 90fdeab Do blah blah blah
    pick 90fdeab Do pqr

Ahora cierre y guarde esto, tendrá la oportunidad de editar el mensaje de confirmación para el que ha utilizado reword en las siguientes ventanas.

Puede consultar el documento oficial aquí también

 20
Author: Punit Vara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-02 05:06:01