从命令行添加换行符到git commit -m

我从命令行使用git,并试图添加一个换行符(使用git commit -m“”)而不进入vim

这可能吗?

当然,如何完成取决于你的shell。 在bash中,你可以在消息的周围使用单引号,只要将引号保持为打开状态,这会使bash提示input另一行,直到closures引用。 喜欢这个:

 git commit -m 'Message goes here' 

或者,你可以使用“这里的文件”:

 git commit -F- <<EOF Message goes here EOF 

使用bash命令行中的git可以执行以下操作:

 git commit -m "this is > a line > with new lines > maybe" 

只需input并在需要换行时按Enter键 ,“>”符号表示您已按Enter键,并且有新行。 其他答案的工作也。

如果你只想要一个头条和一条内容线,你可以使用:

 git commit -m "My head line" -m "My content line." 

你应该可以使用

 git commit -m $'first line\nsecond line' 

从Bash手册 :

$' string 'forms的单词被专门处理。 字扩展为string ,反斜杠转义字符被ANSI C标准指定。

这包括如上所示的对换行符的支持,以及hex和Unicode代码等。 转到链接部分查看反斜线转义字符的列表。

添加换行符到你的git提交

尝试以下操作以创build多行提交消息:

 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." 

然后validation你做了什么:

 git log -1 

你应该得到这样的结果:

Powershell中的多行git提交消息

屏幕截图来自我使用Poshgit使用Powershell设置的示例。

做的事情如:

 git commit -m"test\ntest" 

不起作用,但是像这样:

 git commit -m"$(echo -e "test\ntest")" 

作品,但不是很漂亮。 你在你的PATH设置了一个git-commitlb命令,它执行如下的操作:

 #!/bin/bash message=$1 git commit -m"$(echo -e "$message")" 

并像这样使用它:

 git commitlb "line1\nline2\nline3" 

警告的话,我有一种感觉,一般约定是以总结线作为第一行,然后是两个换行符,然后是提交信息中的扩展信息,所以做这样的事情会打破这个约定。 你当然可以这样做:

 git commitlb "line1\n\nline2\nline3" 

我在Mac上使用zsh,我可以在双引号(“)中发布多行提交消息。基本上我继续input并按回车换行,但是消息不会发送到git,直到我closures引号并返回。

我希望这不是太远离发布的问题,但不会设置默认编辑器 ,然后使用

 git commit -e 

要舒服多less?

从git文档

-m <msg>
–message = <MSG>
使用给定的<msg>作为提交消息。 如果给出了多个-m选项,则它们的值被连接为单独的段落。

所以,如果你正在寻找分组多个提交消息,这应该做的工作。

 git commit -m "commit message1" -m "commit message2" 

你可以使用git commit -m "$(echo)"或者git commit -m $'\n'

就个人而言,我发现在vi (或者你select的git编辑器)而不是在命令行上修改提交信息是最容易的,通过在git commit --amend之后执行git commit --amend

如果你正在使用bash,点击Cx CeCtrl + x Ctrl + e ),它会在你喜欢的编辑器中打开当前的命令。

你可以通过调整VISUALEDITOR来改变首选的编辑EDITOR

这就是我在我的.bashrc

 export ALTERNATE_EDITOR='' export EDITOR='emacsclient -t' export VISUAL='emacsclient -c' export SUDO_EDITOR='emacsclient -t' 

没有必要复杂的东西。 在“m”文本…下一行是通过按ENTER键获得的。当input按>出现。完成后,只需把“,然后按ENTER

 $ git commit -m "Another way of demonstrating multicommit msg > > 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 Anothere way of demonstrating multicommit msg 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 ... 

希望有所帮助