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

这可能吗?


当前回答

来自Git文档:

- m <味精> ——消息= <味精> 使用给定的<msg>作为提交消息。如果给出了多个-m选项,它们的值将作为单独的段落连接起来。

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

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

其他回答

如果您使用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'

在我看来,最初的提交信息行应该是简短的,而不是一段一段的。所以使用 Git commit -m "<short_message>" 就足够了

在此之后,为了扩展我们可以使用的初始提交消息

Git提交—修改

这将打开vim,然后我们可以输入提交消息的解释,在我看来,这比命令行更容易。

在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

当然,它是如何完成的取决于您的shell。在Bash中,可以在消息周围使用单引号,也可以只打开引号,这将使Bash提示另一行,直到关闭引号。是这样的:

git commit -m 'Message

goes
here'

或者,你可以使用“here文档”(也称为heredoc):

git commit -F- <<EOF
Message

goes
here
EOF

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

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

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

My head line

My content line.