tutorial portable para for commands batch git bash shell

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ínea

  • git commit -m "Hello Enter idem

  • git commit -m "Hello^ Entrar idem

  • git commit -m ''Hello^ Enter World'' parece funcionar porque pregunta "¿Más?" y permite escribir una nueva línea, pero finalmente al hacer git 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ón core.editor , la variable de entorno VISUAL o la EDITOR entorno EDITOR (en ese orden). Ver git-var para más detalles.



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.