从命令行中为 'git commit -m' 添加换行符

1052
我正在使用命令行中的 Git,并尝试在提交信息中添加换行符(使用 git commit -m ""),而不进入 Vim。这是否可能?

11
作为一条注释,这里有一个总结良好提交信息惯例的链接 - https://github.com/erlang/otp/wiki/Writing-good-commit-messages ,如果对某人有所帮助。 - Neerkoli
8
类似GIT_EDITOR="emacs" git commit -m '段落1' -m '段落2' -e这样的命令可以帮助你避免使用vim - jotik
18个回答

22

我在Mac上使用zsh,可以在双引号(")中发布多行提交消息。基本上我不断地输入并按回车键进行换行,但直到我关闭引号并按回车键后,消息才发送到Git。


8
你可以在bash中做同样的事情。 - Peter Farmer

8
如果您正在使用Bash,请按下C-x C-eCtrl+x Ctrl+e),它将在您喜欢的编辑器中打开当前命令。
您可以通过调整VISUALEDITOR来更改首选编辑器。
这是我在.bashrc中的内容:
export ALTERNATE_EDITOR=''
export EDITOR='emacsclient -t'
export VISUAL='emacsclient -c'
export SUDO_EDITOR='emacsclient -t'

1
那么为什么有人会踩这个帖子呢?这是在bash中处理多行命令最方便的方法,你只需要正确地配置一次即可。我曾经使用其他愚蠢的建议,但一旦你学会在喜爱的文本编辑器中编辑命令,就再也回不去了。 - Aleks-Daniel Jakimenko-A.
2
这太令人心碎的有用了,我简直不敢相信我过去的几年没有它。 - vinczemarton

8
以下是在Windows标准cmd.exe shell下失败的解决方案列表(为了节省您的试错时间!):
- git commit -m 'HelloEnter无法工作:它不会要求新行。 - git commit -m "HelloEnter同上。 - git commit -m "Hello^Enter同上。 - git commit -m 'Hello^EnterWorld'似乎有效,因为它会询问“More?”并允许编写新行,但最终在执行git log时,您会发现它仍然是一条单行消息。
简而言之:即使在Windows上,命令行解析的工作方式differently,并且^允许多行输入,但在这里并没有帮助。
最后 git commit -e 可能是最佳选项。

5

个人而言,我发现在事后使用vi(或您选择的git编辑器)修改提交消息比在命令行上更容易,只需在git commit之后立即执行git commit --amend


7
只需使用 git commit -e 命令,您就可以在不编辑的情况下实现相同的结果。 - Nathan Hinchey
5
只需输入 git commit 命令,它将打开一个带有提交消息模板的编辑器。 - Jim Stewart

4
很遗憾,git似乎不允许在其消息中使用任何换行符。已经有各种合理的解决方案,但是当脚本化时,那些解决方案都很繁琐。这里的文档也可以工作,但是处理起来可能有点麻烦(考虑yaml文件)。
我是这样做的:
git commit \
    --message "Subject" \
    --message "First line$(echo)Second line$(echo)Third Line"

虽然这仍然很丑陋,但它允许使用“一行代码”,这可能仍然很有用。通常字符串是变量或与变量组合的,因此可以将其丑陋程度降到最低。

在我看来,这是一个非常出色、优雅的解决方案,但在Cygwin 3.3.3上它无法工作。 - saulius2

4

我并没有看到有人提到,如果你不提供信息,它会为您打开nano(至少在Linux中),您可以在其中编写多行...

只需要这样做:

git commit

3
我一直在寻找答案,因为很多时候我都会使用正则表达式来检查提交消息。然而,在使用-m标志创建提交时,没有任何想法起作用。
因此,实现多行提交消息的最简单方法是只在终端中输入git commit。然后,您将有机会输入所需的注释:input_commit_message 不需要更复杂的方法。

-3

在我看来,初始提交信息行应该是简短、简明扼要而不是段落。所以使用 git commit -m "<short_message>" 就足够了。

之后,为了扩展初始提交信息,我们可以使用

git commit --amend

这将打开vim,然后我们可以输入提交信息的解释,这比命令行更容易,这是我个人的看法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接