Answers:
当然,它的完成方式取决于您的shell。在Bash中,您可以在消息周围使用单引号,并且可以仅打开引号,这将使Bash提示另一行,直到关闭引号为止。像这样:
git commit -m 'Message
goes
here'
或者,您可以使用“此处文档”(也称为heredoc):
git commit -F- <<EOF
Message
goes
here
EOF
git
命令可以从stdin中读取消息文本,并且该-F
选项提供了从中读取消息的文件名。
例如,如果您只想要标题行和内容行,则可以使用:
git commit -m "My head line" -m "My content line."
请注意,这将创建单独的段落-而不是行。所以每两个之间会有一个空白行-m
,例如:
My head line
My content line.
-m
每行分开。真好!
man git commit
:-m <msg>,-message = <msg>使用给定的<msg>作为提交消息。如果给出了多个-m选项,则它们的值将串联为单独的段落。
-m
。
使用命令行和Bash一起使用Git可以执行以下操作:
git commit -m "this is
> a line
> with new lines
> maybe"
只需键入并按一下,Enter当您需要换行时,“>”符号表示您已按Enter,并且有新行。其他答案也可以。
您应该可以使用
git commit -m $'first line\nsecond line'
从Bash手册:
$' string ' 形式的单词会被特殊对待。该单词扩展为 string,并按ANSI C标准的规定替换了反斜杠转义的字符。
这包括对上述换行符的支持,以及十六进制和Unicode代码及其他。转到链接的部分以查看反斜杠转义字符的列表。
echo $'one\ntwo'
什么时会看到什么?
git commit -m "first line"$'\n'"second line"
。只需注意,您必须在启动之前关闭前一个字符串$'string'
。
在Git提交中添加换行符
尝试以下操作来创建多行提交消息:
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."
然后验证您做了什么:
git log -1
您应该以如下形式结束:
屏幕截图来自我使用Poshgit使用PowerShell设置的示例。
做类似的事情
git commit -m"test\ntest"
不起作用,但是类似
git commit -m"$(echo -e "test\ntest")"
可以,但是不是很漂亮。您git-commitlb
在PATH
其中设置了一个执行以下命令的命令:
#!/bin/bash
message=$1
git commit -m"$(echo -e "$message")"
并像这样使用它:
git commitlb "line1\nline2\nline3"
警告,我觉得一般约定是将摘要行作为第一行,然后两个换行符,然后在提交消息中包含扩展消息,因此执行此类操作将破坏该约定。您当然可以:
git commitlb "line1\n\nline2\nline3"
无需使这些东西复杂化。-m "text...
在下一行之后,按Enter。当Enter按下>
出现。完成后,只需"
按Enter:
$ 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 ...
在Bash / Zsh中,您可以简单地在引号内使用文字换行符:
git commit -m 'Multi-line
commit
message'
ANSI-C引用也可以在Bash / Zsh中使用:
git commit -m $'Multi-line\ncommit\nmessage'
您还可以指示Git使用您选择的编辑器来编辑提交消息。从git-commit的文档中:
将从
GIT_EDITOR
环境变量,core.editor
配置变量,VISUAL
环境变量或EDITOR
环境变量(按此顺序)中选择用于编辑提交日志消息的编辑器 。有关详细信息,请参见git-var。
如果您使用的是Bash,请点击C-x C-e
(Ctrl+ x Ctrl+ e),它将在您的首选编辑器中打开当前命令。
您可以通过调整VISUAL
和来更改首选编辑器EDITOR
。
那就是我所拥有的.bashrc
:
export ALTERNATE_EDITOR=''
export EDITOR='emacsclient -t'
export VISUAL='emacsclient -c'
export SUDO_EDITOR='emacsclient -t'
这是带有标准cmd.exe shell的Windows 上失败的解决方案的列表(为您节省一些反复试验的时间!):
git commit -m 'Hello
Enter 不起作用:它不会要求换新线
git commit -m "Hello
Enter 同上
git commit -m "Hello^
Enter 同上
git commit -m 'Hello^
Enter World'
看起来像是在工作,因为它询问“更多?” 并允许编写新行,但是最后在执行此操作时,git log
您会看到它仍然是单行消息...
TL; DR:即使在Windows上,命令行解析的工作方式也不同,并且^
允许多行输入,但此处无济于事。
最后git commit -e
可能是最好的选择。
我没有看到有人提到如果您不提供消息,它将为您打开nano(至少在Linux中是这样),您可以在其中编写多行代码...
仅此需要:
git commit