git - modelo - minuta de fusion por absorcion colombia
Git: ¿Cómo editar/reescribir un mensaje de compromiso de fusión? (5)
¿Cómo edito o reescribo el mensaje de un commit de fusión?
git commit --amend
funciona si es el último commit realizado ( HEAD
), pero ¿y si viene antes que HEAD
?
git rebase -i HEAD~5
no muestra los commit de fusión.
El git rebase -i HEAD~5
el editor. Enumera las confirmaciones especificadas (en este caso cinco de ellas). La primera columna contiene pick
para cada commit. Simplemente reemplace pick
con reword
en ese editor y guarde + cierre el editor. Luego, git mostrará el editor emergente para cada confirmación en la que haya cambiado la pick
por la reword
y le permitirá editar el mensaje de confirmación.
Otra buena respuesta que usa solo comandos primitivos - por knittl https://.com/a/7599522/94687 :
git checkout <sha of merge>
git commit --amend # edit message
git rebase HEAD previous_branch
o un mejor (más correcto) comando de rebase final:
git rebase <sha of merge> previous_branch --onto HEAD
Por cierto, usar los comandos primitivos podría tener la agradable "característica" de no consumir demasiada CPU y hacer que esperes un tiempo desconocido hasta que Git termine de pensar en la lista de confirmaciones que necesitan ser reestadificadas en el caso de git rebase -p -i HEAD^^^^
(tal comando que resultaría en una lista de solo 4 últimos commits con la fusión como último en mi caso en mi caso tomó alrededor de 50 segundos).
Si agrega la opción --preserve-merges
(o su sinónimo, -p
) al comando git rebase -i
entonces git intentará preservar las fusiones cuando se rebase, en lugar de linealizar el historial, y usted debería poder enmendar el fusionar se compromete también:
git rebase -i -p HEAD~5
Tenga en cuenta que, al iniciar git1.7.9.6 (y git1.7.10 +), git merge
sí mismo activará el editor para que pueda agregar detalles a una combinación.
"
git merge $tag
" para fusionar una etiqueta anotada siempre abre el editor durante una sesión de edición interactiva. La serie v1.7.10 introdujo una variable de entorno GIT_MERGE_AUTOEDIT para ayudar a las secuencias de comandos anteriores a rechazar este comportamiento, pero la pista de mantenimiento también debería ser compatible.
También introduce una variable de entorno GIT_MERGE_AUTOEDIT
para ayudar a las secuencias de comandos anteriores a rechazar este comportamiento.
Consulte " Anticipar a Git 1.7.10 ":
Recientemente, en una discusión en la lista de correo de Git , Linus admitió (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 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 a un terminal) abrirá un editor antes de crear un compromiso para registrar el resultado de fusión, para dar el usuario tiene la oportunidad de explicar la fusión, al igual que el comando de confirmación de git que el usuario ejecuta después de resolver una fusión en conflicto ya lo hace.
Linus dijo:
Pero realmente no me importa cómo funciona: mi principal problema es que git hace que sea muy fácil tener malos mensajes de fusión.
Creo que parte de eso es una idiotez aún más simple: nunca arrancamos el editor de manera predeterminada para una "combinación git", pero hacemos un "git commit
".
Eso fue un error de diseño, y significa que si realmente quiere agregar una nota a una fusión, debe hacer un trabajo extra. Entonces la gente no .
Tenga en cuenta que, antes de Git 2.17 (Q2 2018), " git rebase -p
" mensajes de registro mutilados de una fusión de compromiso, que ahora está corregido.
Ver commit ed5144d (08 Feb 2018) por Gregory Herrero (``) .
Sugerido por: Vegard Nossum ( vegard
) , y Quentin Casasnovas ( casasnovas
) .
(Fusionado por Junio C Hamano - gitster
- en commit 8b49408 , 27 Feb 2018)
rebase -p
: corrige el mensaje de confirmación incorrecto al llamar agit merge
.Desde la confirmación dd6fb00 ("
rebase -p
: corregir lasrebase -p
al invocargit merge
", enero 2018, Git 2.16.0-rc2), el mensaje de confirmación de la confirmación de fusión que se está rebasando se pasa al comando de fusión utilizando una subshell que ejecuta ''git rev-parse --sq-quote
''.Se necesitan comillas dobles alrededor de esta subcadena para que se guarden nuevas líneas para el comando de
git merge
.Antes de este parche, después del mensaje de fusión:
"Merge mybranch into mynewbranch Awesome commit."
se convierte en:
"Merge mybranch into mynewbranch Awesome commit."
después de una
rebase -p
.
git merge --edit
Le permite dar el comentario incluso en caso de fusión no interactiva.
git merge --edit --no-ff
puede ser útil si sigues git flow con rebasing en la rama de desarrollo y fusionándote sin avance rápido.