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

这可能吗?


当前回答

我一直在寻找这个问题的答案,因为我曾经多次看到用于检查提交消息的正则表达式。无论如何,在使用-m标志创建提交时,没有任何想法可以工作。

因此,实现多行提交消息的最简单方法是在终端中只输入git commit。 然后,你将有机会输入你想要的笔记:

不需要更复杂的方法了。

其他回答

从命令行使用Git和Bash,你可以做到以下几点:

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

当你想要新的一行时,只需输入并按Enter,“>”符号意味着你已经按了Enter,并且有一个新的行。其他答案也适用。

我没有看到任何人提到如果你不提供消息,它会为你打开nano(至少在Linux中),在那里你可以写多行…

只需要这样:

git commit

比如

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"

我在Mac上使用zsh,我可以在双引号(")内发布多行提交消息。基本上,我一直键入并按回车键获取新行,但直到我关闭引号并返回,消息才被发送到Git。

你应该能够使用

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

从Bash手册:

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

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