Git trata las líneas que comienzan #como líneas de comentarios al confirmar. Esto es muy molesto cuando se trabaja con un sistema de seguimiento de tickets y cuando se intenta escribir el número de ticket al comienzo de la línea, por ej.
#123 salt hashed passwords
git simplemente eliminará la línea del mensaje de confirmación. ¿Hay alguna forma de escapar del hash? Lo intenté \y !, pero nada funciona. los espacios en blanco anteriores #se conservan, por lo que tampoco son una solución funcional al problema.
git
commit
ticket-system
ticket-tracking
knittl
fuente
fuente

git config core.commentcharpermite configurar ese carácter de comentario. Vea mi respuesta a continuacióngit commit --cleanup=scissorsserá más flexible. Ver detalles en mi respuestaRespuestas:
Este comportamiento es parte del comportamiento
git commitpredeterminado de 'limpieza'. Si desea que las líneas comiencen#, puede usar un modo de limpieza alternativo.P.ej
Si hace esto, debe tener cuidado de eliminar todas las
#líneas que no desea que aparezcan en la confirmación.fuente
commit.templatevariable de configuración git.git commit --amend --cleanup=whitespaceTenga en cuenta que, desde git1.8.2 (febrero de 2013) , puede usar un carácter diferente a '
#' para la línea comentada en el mensaje de confirmación.Eso le permite usar '
#' para su referencia de número de error.En teoría, podría poner una
core.commentCharpalabra (varios caracteres), pero git 2.0.x / 2.1 será más estricto (Q3 2014).Ver commit 50b54fd por Nguyễn Thái Ngọc Duy (
pclouds) :config: sé estricto en core.commentChar
git 2.0.x / 2.1 (Q3 2014) agregará una selección automática para
core.commentChar:Ver commit 84c9dc2
La lista de caracteres candidatos para "auto" son:
Eso significa que un comando como
git commit -m '#1 fixed issue'cambiará automáticamente commentChar a ';', porque '#' se usó en el mensaje de confirmación.fuente
$ git config --global core.commentchar ';'git config --global core.commentChar autoLas respuestas aquí son buenas y detalladas, pero para un novato de git como yo, personalizar las opciones de configuración de git no es tan obvio. Aquí hay un ejemplo para cambiar de
#a;por caracteres de comentario:Eso es todo lo que necesitas hacer.
fuente
git commitpara abrir el editor configurado para editar un mensaje de confirmación!git -c core.commentChar="|" commit --amend(reemplace|con lo que quiera).Puede usar la opción de línea de comando
-m:fuente
Si está haciendo un rebase interactivo, cuando guarde su mensaje de confirmación sin nada (porque
#al principio lo ha hecho un comentario y, por lo tanto, se ha ignorado), git le mostrará qué hacer:Entonces, solo modifique el mensaje:
y continúa la rebase:
fuente
git commit --cleanup=scissorsdebería ser usado. Se agregó a Git v2.0.0 en 2014.05.21de
git commit --helpfuente
commit.cleanup = whitespacey eliminar# …comentarios a mano, como ya ha sugerido @CharlesBailey.scissors-mode solo limpia adicionalmente la sintaxis de tijera utilizada porgitformat-patch/mailinfo/am; sí no utilizar la…-- >8 --…sintaxis al añadir comentarios a los mensajes de confirmación .# ...comentarios por completo. 2. No estoy tan seguro de la segunda parte de tu comentario, elscissorsmodo definitivamente está engit commit --help. ¿Qué versión degitestás usando? @ SlippD.Thompsonwhitespaceel modo ofrece la eliminación de 1. líneas vacías iniciales y finales, 2. espacios en blanco finales, 3. contraer líneas vacías consecutivas.scissorsofrece la eliminación de 1. líneas vacías iniciales y finales, 2. espacios en blanco finales, 3. colapsan líneas vacías consecutivas, 4. todo desde (e incluyendo) la línea# -…- >8 -…-. Sin embargo, las líneas de tijera (# -…- >8 -…-) solo se insertan cuando se usagit-format-patch/mailinfo/am. Por lo tanto, para un flujo de trabajogit-commit/merge/rebase/ normalcherry-pick, elscissorsmodo de extracción ofrece cero beneficios sobre elwhitespacemodo. v2.11.0git commit --cleanup=scissorsSÍ antepone la# ------------------------ >8 ------------------------línea antes de lagit statusinformación. Como a continuación: `# ------------------------> 8 ------------------- ----- # No toque la línea de arriba. # Todo lo siguiente se eliminará. # En la rama maestra # # Confirmación inicial # # Cambios a confirmar: # archivo nuevo: .gitignore `# ------------------------ >8 ------------------------txt anterior al estado "Parece que puedes estar ..." _ cuando lo usasscissors; sin embargo, inserta la línea de tijera después del# Conflicts: …texto. Lo habíacommit.status = falseconfigurado en mi.gitconfig, así que no estaba viendo ningún texto de estado, solo el texto de conflictos. Estoy corregido; cambiando para votar.Use un prefijo diferente para el número de boleto. O anteponga una palabra al número de ticket, como "Bug # 42". O anteponga un solo carácter de espacio a la línea; si desea eliminar ese espacio en blanco, puede agregar un enlace de compromiso para eso.
Personalmente, preferiría que este tipo de manipulación de mensajes de compromiso no sea realizada por un gancho, ya que puede ser muy irritante cuando se activa cuando no lo desea. La solución más fácil es probablemente repensar el problema.
fuente
#xxxocurrir en cualquier parte del mensaje de confirmación se vinculará con el problema. No tiene que ser al comienzo de la confirmación. ¿Quizás esto es algo que ha cambiado en los últimos cinco años?Todos mis commits comienzan con,
#issueNumberasí que pongo este repetitivo en mivim .git/hooks/commit-msg:Supongamos que tenemos una rama
#15y hacemos un mensaje de confirmaciónadd new awesome feature. Con este enfoque, el mensaje de confirmación final será#15 add new awesome feature.fuente