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

这可能吗?


当前回答

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

git commit -e

可能会舒服得多。

其他回答

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

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

不需要更复杂的方法了。

如果您使用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"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 commit -e

可能会舒服得多。

遗憾的是,git似乎不允许在其消息中出现任何换行符。上面已经有各种合理的解决方案,但在编写脚本时,这些都很烦人。这里文档也可以工作,但是处理起来可能有点麻烦(比如yaml文件)

以下是我所做的:

git commit \
    --message "Subject" \
    --message "First line$(echo)Second line$(echo)Third Line"

虽然这仍然很难看,但它允许“一行程序”,这可能仍然有用。由于字符串通常是变量或与变量组合在一起,因此可以将丑陋的字符串保持到最小。