Git: ¿Cómo editar / reescribir el mensaje de combinación de combinación?

¿Cómo cambio o reescribo el mensaje de error de combinación?

git commit --amend funciona si este es el último commit ( HEAD ), pero ¿y si va a HEAD ?

git rebase -i HEAD~5 no lista los comandos de combinación.

98
02 сент. set ma11hew28 02 sep . 2011-09-02 07:18 '11 a las 7:18 am 2011-09-02 07:18
@ 4 respuestas

Si agrega la --preserve-merges (o su sinónimo, -p ) al git rebase -i , git intentará preservar las fusiones en el reinicio en lugar de linealizar el historial, y debería poder arreglar la fusión también:

 git rebase -i -p HEAD~5 
133
02 сент. Respuesta dada por Mark Longair 02 sep. 2011-09-02 07:47 '11 a las 7:47 2011-09-02 07:47

Tenga en cuenta que al principio de git1.7.9.6 (y git1.7.10 +), git merge siempre iniciará el editor para que pueda agregar información de combinación.

" git merge $tag " para fusionar una etiqueta anotada siempre abre el editor durante una sesión de edición interactiva. Las filas v1.7.10 introdujeron la variable de entorno GIT_MERGE_AUTOEDIT para ayudar a los scripts antiguos a descartar este comportamiento, pero el seguimiento del servicio también debería admitirlo.

También introduce la variable de entorno GIT_MERGE_AUTOEDIT para ayudar a los scripts antiguos a descartar este comportamiento.

Consulte " Esperando a Git 1.7.10 ":

border=0

Recientemente, en una discusión en la lista de correo de Git, Linus reconoció (y acepté) que este fue uno de los errores de diseño que cometimos al principio de la historia de Git.
Y en 1.7.10 y versiones posteriores, el comando Git merge que se ejecuta en una sesión interactiva (es decir, tanto su entrada estándar como su salida estándar conectada al terminal) abrirá el editor antes de crear una fijación para registrar el resultado de la fusión, de modo que Permita que el usuario explique la combinación, al igual que un comando de confirmación Git realizado por el usuario después de que se haya resuelto el conflicto de combinación.

Linus dijo:

Pero no me importa cómo realmente funciona, mi principal problema es que Git hace que sea muy fácil tener mensajes mal combinados.
Creo que parte de esto es una idiotez aún más simple: ni siquiera ejecutamos el editor predeterminado para git merge, pero sí lo hacemos para git commit .
Esto fue un error de diseño, y esto significa que si desea agregar una nota a la combinación, necesita hacer un trabajo adicional. Por lo tanto, la gente no lo hace .

26
03 апр. La respuesta se da VonC 03 abr. 2012-04-03 08:55 '12 a las 8:55 2012-04-03 08:55

Otra buena respuesta que usa solo comandos primitivos es knittl delphi-faq.net.site/questions/58215 / ... :

 git checkout <sha of merge> git commit --amend # edit message git rebase HEAD previous_branch 

o mejor (más correcto) comando de rebase final:

 git rebase <sha of merge> previous_branch --onto HEAD 

Por cierto, el uso de comandos primitivos puede tener una buena "característica" para no consumir demasiada CPU y mantenerte esperando un tiempo desconocido hasta que Git termine de pensar en la lista de confirmaciones que deben restablecerse en caso de git rebase -p -i HEAD^^^^ ( un comando de este tipo que llevaría a la lista de las últimas 4 confirmaciones con la fusión, ya que la última en mi caso tomó cerca de 50 segundos en mi caso!).

3
01 марта '17 в 18:34 2017-03-01 18:34 la respuesta se da imz - Ivan Zakharyaschev 01 de marzo de 2017 a las 18:34 2017-03-01 18:34

El git rebase -i HEAD~5 mostrará un editor. Enumera las confirmaciones especificadas (en este caso, cinco de ellas). La primera columna contiene una pick para cada confirmación. Simplemente reemplace pick con reword en este editor y guarde + cierre el editor. Luego, git mostrará un editor para cada confirmación, donde cambiará la pick para reword a reword , y podrá editar el mensaje de confirmación.

0
10 янв. Respuesta de ChrisD el 10 de enero 2012-01-10 08:24 '12 a las 8:24 2012-01-10 08:24

Otras preguntas sobre las etiquetas o hacer una pregunta