trucos tag sirven ramas que para name las hace commits commands comentarios git

tag - para que sirven las ramas git



¿Cómo envolver a Git para cometer comentarios? (15)

Al menos en la versión 1.7.9.5 de git log , el git log admite el ajuste de línea. Desde el registro de ayuda de git:

PRETTY FORMATS %w([<w>[,<i1>[,<i2>]]]): switch line wrapping

Entonces, por ejemplo, lo siguiente envuelve los temas largos en 72 columnas:

alias gl=''git log --format="%C(yellow)%h %an %ad%C(reset)%n%w(72,1,2)%s"''

(Acordó que se deben seguir las convenciones de formato en lugar de confiar en esto. Sin embargo, esto podría ser útil hasta que llegue el día en que todos conozcan y respeten las convenciones).

¿Hay alguna forma de envolver los comentarios de git commit (cuando se visualizan a través de git log ), para que no se corten al final de la línea? Parece que debería haber una solución bastante simple, pero no he podido encontrar ninguna.

Gracias.


Así es como resolví para envolver los mensajes de registro de git, para aquellos que todavía están buscando respuestas:

git log --pretty=format:"@%H,%cn,%cD,%B" <file name> | tr "/n" " "|tr "@" "/n"

El resultado del comando git log está canalizado y encuentra la nueva línea y reemplaza con un espacio en blanco. Esta es la lógica utilizada para unir los mensajes de compromiso como una sola línea.

Aquí, estoy usando "@" como delimitador para diferenciar entre las confirmaciones. Puede reemplazarlo con el símbolo especial que desee. "% H" representa el hash de confirmación, "% cn" representa el nombre del comitente, "% cD" representa la fecha de confirmación y el mensaje de cuerpo sin procesar "% B". Si quieres saber más sobre pretty = format, mira https://git-scm.com/docs/pretty-formats

Tenga en cuenta que esto puede no funcionar si tiene un carácter de nueva línea dentro del mensaje de confirmación de git.


Así que estaba buscando una solución a un problema similar a esto, y me encontré con esta pregunta. En mi caso estoy ejecutando git show y tengo 2 líneas donde el cambio está en una sola palabra, hacia el final de una línea muy larga. Terminé resolviendo esto con un enfoque similar a cómo lo hago con git diff, usando la opción --word-diff-regex.

git show --color --word-diff-regex="[^[:space:],]+" 55de9c954d5d74a185879d3441a69cc1889c00f1 |more


Como VonC mencionó, es posible que desee envolver sus mensajes de compromiso en 72 caracteres y matar a muchos pájaros de un tiro. Este git hook guarda automáticamente sus mensajes de confirmación y funciona con cualquier editor: https://github.com/surabhigupta/AutoWrapSeventyTwo


Editar 2011: las other answers (upvoted) resaltan la posibilidad de modificar less las opciones, el localizador predeterminado utilizado por git.
El comentario al final de mi respuesta sigue en pie: incluso si puede ver el mensaje de compromiso largo, eso no significa que otras herramientas que tengan que lidiar con dicho mensaje (largo) podrán procesarlo.

Respuesta original (enero de 2010) sobre la política de formato de mensaje de compromiso:

De acuerdo con este blog , dado que git log no realiza ningún tipo de ajuste, debe formatear su comentario con una longitud de línea adecuada

  • git log no hace ningún ajuste especial especial de los mensajes de confirmación.
    Con el buscapersonas por defecto de less -S , esto significa que tus párrafos fluyen lejos del borde de la pantalla, lo que dificulta su lectura.
    En un terminal de 80 columnas, si restamos 4 columnas para la sangría de la izquierda y 4 más para la simetría de la derecha, nos quedan 72 columnas.
  • git format-patch --stdout convierte una serie de confirmaciones en una serie de correos electrónicos, utilizando los mensajes para el cuerpo del mensaje.
    Una buena netiqueta de correo electrónico exige que envolvemos nuestros correos electrónicos de texto plano de modo que haya espacio para unos pocos niveles de indicadores de respuesta anidados sin desbordamiento en un terminal de 80 columnas.

Como dije aquí :

En general, use un editor para crear sus mensajes de compromiso en lugar de pasarlos en la línea de comando. El formato debe ser:

  • Una envoltura dura a 72 caracteres
  • Un resumen único, corto, del compromiso
  • Seguido por una línea en blanco
  • Seguido por detalles de soporte

Todas las fuentes (incluido el libro de GitPro , que tiene 50 caracteres para la primera línea, como comenta Jörg W Mittag ) insisten en la necesidad de envolver el comentario, sin duda porque, incluso si Git era capaz de manejar largas colas, otras herramientas en la cadena de procesamiento (correo electrónico, parches, ...) no puede.


En la respuesta anterior se menciona que el buscapersonas por defecto (a menudo ''menos'') es responsable de envolver y, por defecto, generalmente corta las líneas largas.

Para modificar esto sin cambiar los mensajes de confirmación (menos y ejemplo bash):

$ echo $LESS -FRSX

Esto era lo que tenía por defecto, ahora para sobrescribir la variable de entorno LESS.

echo "LESS=-FRX;export LESS" >> ~/.bash_profile source ~/.bash_profile


Esto me ha ayudado.

git --no-pager log WhateverBranch | head -n40

Por lo general, la ramificación es grande, por lo tanto, conectarla a la cabeza y usar el interruptor -n le permite obtener solo las 40 líneas de salida más recientes (o la cantidad de líneas) que necesite, y debe ajustarse (no es necesario desplazarse). Tenga en cuenta que este enfoque también carece del formato de color.


La sugerencia personal es ser simple. Cuando desee ver las líneas completas en el buscapersonas menos, escriba -S, esto cambiará a plegar las líneas o volver si desea ver una sección de esa manera.


No parece haber una manera perfecta. Una solución alternativa que uso es simplemente canalizar la salida a more (o less , o cat etc.):

git log | more

Eso envuelve las líneas largas al menos en mi sistema (sin embargo, se pierde el formato de color).


O puede cambiar su busca para usar less -R

$ git config --global core.pager ''less -R''

Esto le dirá menos a dejar de tratar de controlar cómo se formatea la pantalla (normalmente puede desplazarse hacia la derecha y hacia la izquierda durante un git log usando las teclas de flecha). Y como el manual menos dice "Por lo tanto, varios problemas de visualización pueden resultar, como líneas largas que se dividen en el lugar equivocado". Que es lo que desea, desea que el final de línea aparezca a la derecha de la pantalla (el lugar incorrecto) en lugar de donde lo ubicó el autor del comentario.

También para tener en cuenta, presionar la tecla de la flecha hacia la derecha sin modificar su buscapersonas, le permitirá ver más del código. ¿Cuál es mi método preferido?


Para aquellos que usan SourceTree , hay una configuración ( Opciones> General ) que mostrará una guía de columna en el mensaje de confirmación:


RESPUESTA CORTA:
Escriba -S luego, ingrese al visualizar el registro de git.

RESPUESTA DETALLADA:
git log outputs utilizando less visor de texto, así que simplemente escriba -S luego Enter para alternar entre los dos modos de ajuste de línea de "Chop long lines" y "Fold long lines". La opción "Plegar líneas largas" habilita el ajuste de palabras.

Fuente que me ayudó a aprender esto: https://superuser.com/a/272826/425838


Si nano es su editor preferido, entonces puede configurar git para usar nano con ajuste automático en, por ejemplo, 72 caracteres:

git config --global core.editor "nano -r 72"


Tenga en cuenta que menos -r (como se recomendó anteriormente) lleva a que se olvide menos el recuento de líneas y se pierda compromisos porque las líneas superiores se desplazarán fuera de la vista. La solución real es deshabilitar la opción -S que git activa por defecto si la variable de entorno LESS no está configurada.

Una buena solución es cambiar su configuración de git de la siguiente manera:

git config --global core.pager ''less -+S''


Usar este formato hizo mi vida más feliz:

log --pretty=format:/"%w(80,1,41)%h - %an, %ar : %s/"

Dado que los campos en el resultado antes del mensaje de confirmación sumaron aproximadamente 39 caracteres para la mayoría de mis confirmaciones, hace que la lectura sea mucho más fácil.