portable - Agregue un salto de línea a ''git commit-m'' desde la línea de comando
git tutorial (14)
Aquí hay una lista de soluciones fallidas en Windows con shell cmd.exe estándar (para ahorrarle un poco de tiempo de prueba y error):
git commit -m ''Hello
Enter no funciona: no pedirá una nueva líneagit commit -m "Hello
Enter idemgit commit -m "Hello^
Entrar idemgit commit -m ''Hello^
EnterWorld''
parece funcionar porque pregunta "¿Más?" y permite escribir una nueva línea, pero finalmente al hacergit log
verás que sigue siendo un mensaje de una línea ...
TL; DR: Incluso si en Windows, el análisis de la línea de comandos funciona de manera differently , y ^
permite la entrada de differently líneas, no ayuda aquí.
Finalmente, git commit -e
es probablemente la mejor opción.
Estoy usando Git desde la línea de comandos e intento agregar un salto de línea al mensaje de confirmación (usando git commit -m ""
) sin entrar en Vim.
es posible?
Ciertamente, cómo se hace depende de su shell. En Bash, puede usar comillas simples alrededor del mensaje y simplemente dejar la cotización abierta, lo que hará que Bash aparezca en otra línea, hasta que cierre la cotización. Me gusta esto:
git commit -m ''Message
goes
here''
Alternativamente, puede usar un "documento aquí":
git commit -F- <<EOF
Message
goes
here
EOF
De la documentación de Git :
-m <msg>
--mensaje = <msg>
Utilice el <msg> dado como mensaje de confirmación. Si se dan varias opciones-m
, sus valores se concatenan como párrafos separados.
Por lo tanto, si está buscando agrupar varios mensajes de confirmación, esto debería hacer el trabajo:
git commit -m "commit message1" -m "commit message2"
Debes ser capaz de usar
git commit -m $''first line/nsecond line''
Del manual de Bash :
Las palabras de la forma $ '' cadena '' se tratan especialmente. La palabra se expande a la cadena , con caracteres de escape de barra invertida reemplazados según lo especificado por el estándar ANSI C.
Esto incluye soporte para nuevas líneas como se muestra arriba, más códigos hexadecimales y Unicode y otros. Vaya a la sección vinculada para ver una lista de los caracteres de escape de barra invertida.
En Bash / Zsh puedes simplemente usar saltos de línea literales dentro de las comillas:
git commit -m ''Multi-line
commit
message''
La cotización de ANSI-C también funciona en Bash / Zsh:
git commit -m $''Multi-line/ncommit/nmessage''
También puede indicar a Git que use un editor diferente. De los documentos en git-commit :
El editor utilizado para editar el mensaje de registro de confirmación se elegirá de la variable de entorno
GIT_EDITOR
, la variable de configuracióncore.editor
, la variable de entornoVISUAL
o laEDITOR
entornoEDITOR
(en ese orden). Ver git-var para más detalles.
Espero que esto no se aleje demasiado de la pregunta publicada, sino que establezca el editor predeterminado y luego use
git commit -e
podría ser mucho más cómodo.
Haciendo algo como
git commit -m"test/ntest"
no funciona, pero algo como
git commit -m"$(echo -e "test/ntest")"
Funciona, pero no es muy bonito. Usted configura un comando git-commitlb
en su PATH
que hace algo como esto:
#!/bin/bash
message=$1
git commit -m"$(echo -e "$message")"
Y úsalo así:
git commitlb "line1/nline2/nline3"
Una advertencia: tengo la sensación de que la convención general es tener una línea de resumen como la primera línea, y luego dos saltos de línea, y luego un mensaje extendido en el mensaje de confirmación, por lo que hacer algo como esto rompería esa convención. Por supuesto que podrías hacer:
git commitlb "line1/n/nline2/nline3"
No hay necesidad de complicar las cosas. Después de -m "text...
la siguiente línea presionando Intro . Cuando se presiona Intro >
aparece. Cuando haya terminado, simplemente coloque "
y presione Intro :
$ git commit -m "Another way of demonstrating multicommit messages:
>
> This is a new line written
> This is another new line written
> This one is really awesome too and we can continue doing so till ..."
$ git log -1
commit 5474e383f2eda610be6211d8697ed1503400ee42 (HEAD -> test2)
Author: ************** <*********@gmail.com>
Date: Mon Oct 9 13:30:26 2017 +0200
Another way of demonstrating multicommit messages:
This is a new line written
This is another new line written
This one is really awesome too and we can continue doing so till ...
Personalmente, me resulta más fácil modificar los mensajes de confirmación después del hecho en vi
(o cualquiera que sea el editor de git de su elección) en lugar de en la línea de comandos, haciendo git commit --amend
justo después de git commit
.
Si está utilizando Bash, presione Cx Ce
( Ctrl + x Ctrl + e ) y se abrirá el comando actual en su editor preferido.
Puedes cambiar el editor preferido ajustando VISUAL
y EDITOR
.
Eso es lo que tengo en mi .bashrc
:
export ALTERNATE_EDITOR=''''
export EDITOR=''emacsclient -t''
export VISUAL=''emacsclient -c''
export SUDO_EDITOR=''emacsclient -t''
Si solo quiere, digamos, una línea de cabecera y una línea de contenido, puede usar:
git commit -m "My head line" -m "My content line."
Usando Git desde la línea de comandos con Bash puedes hacer lo siguiente:
git commit -m "this is
> a line
> with new lines
> maybe"
Simplemente escriba y presione Intro cuando desee una nueva línea, el símbolo ">" significa que ha presionado Intro , y hay una nueva línea. Otras respuestas funcionan también.
Utilizo zsh en una Mac y puedo publicar mensajes de confirmación de varias líneas con comillas dobles ("). Básicamente, sigo escribiendo y presionando la tecla de retorno para nuevas líneas, pero el mensaje no se envía a Git hasta que cierre las citas y devuelvo .
Agregando saltos de línea a su Git commit
Intente lo siguiente para crear un mensaje de confirmación multilínea:
git commit -m "Demonstrate multi-line commit message in Powershell" -m "Add a title to your commit after -m enclosed in quotes,
then add the body of your comment after a second -m.
Press ENTER before closing the quotes to add a line break.
Repeat as needed.
Then close the quotes and hit ENTER twice to apply the commit."
Luego verifica lo que has hecho:
git log -1
Deberías terminar con algo como esto:
La captura de pantalla es de un ejemplo que configuré usando PowerShell con Poshgit.