我正在从命令行使用Git,并试图在提交消息中添加换行符(使用Git commit -m "")而不进入Vim。

这可能吗?


当前回答

如果你只是想要一个标题行和一个内容行,你可以使用:

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

注意,这会创建单独的段落,而不是行。所以在每两个-m行之间会有一个空行,例如:

My head line

My content line.

其他回答

你应该能够使用

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

从Bash手册:

形式为$'string'的单词被特殊处理。这个词扩展为 属性指定的反斜杠转义字符替换为 ANSI C标准。

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

如果你只是想要一个标题行和一个内容行,你可以使用:

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

注意,这会创建单独的段落,而不是行。所以在每两个-m行之间会有一个空行,例如:

My head line

My content line.

比如

git commit -m"test\ntest"

这并不奏效,但就像

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

有用,但不是很漂亮。你在PATH中设置了一个git- commitb命令,它是这样做的:

#!/bin/bash

message=$1

git commit -m"$(echo -e "$message")"

像这样使用它:

git commitlb "line1\nline2\nline3"

提醒一下,我感觉一般惯例是第一行是摘要行,然后是两个换行符,然后是提交消息中的扩展消息,所以这样做会打破惯例。你当然可以:

git commitlb "line1\n\nline2\nline3"

在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

你应该得到这样的结果:

截图来自我使用PowerShell和Poshgit创建的一个示例。

这适用于所有终端和操作系统AFAIK。

下面是bash的示例:

导致这个提交:

在Bash/Zsh中,你可以简单地在引号内使用文字换行:

git commit -m 'Multi-line
commit
message'

ANSI-C引用也适用于Bash/Zsh:

git commit -m $' multiline \ncommit\nmessage'

您还可以指示Git使用您选择的编辑器来编辑提交消息。来自git-commit的文档:

用于编辑提交日志消息的编辑器将从 GIT_EDITOR环境变量,核心。编辑器配置 变量、VISUAL环境变量或编辑器 环境变量(按此顺序)。详见git-var。

因此,使用nano编辑您的消息,例如,您可以运行:

export GIT_EDITOR=nano
git commit