我正在从命令行使用Git,并试图在提交消息中添加换行符(使用Git commit -m "")而不进入Vim。
这可能吗?
我正在从命令行使用Git,并试图在提交消息中添加换行符(使用Git commit -m "")而不进入Vim。
这可能吗?
当前回答
如果你只是想要一个标题行和一个内容行,你可以使用:
git commit -m "My head line" -m "My content line."
注意,这会创建单独的段落,而不是行。所以在每两个-m行之间会有一个空行,例如:
My head line
My content line.
其他回答
没有必要把事情复杂化。在-m "文本之后…下一行是通过按Enter得到的。当按下回车键时,出现>。当你完成后,只需输入“”并按Enter:
$ git commit -m "Another way of demonstrating multicommit messages:
>
> This is a new line written
> This is another new line written
> This one is really awesome too and we can continue doing so till ..."
$ git log -1
commit 5474e383f2eda610be6211d8697ed1503400ee42 (HEAD -> test2)
Author: ************** <*********@gmail.com>
Date: Mon Oct 9 13:30:26 2017 +0200
Another way of demonstrating multicommit messages:
This is a new line written
This is another new line written
This one is really awesome too and we can continue doing so till ...
(编辑05-05-2021)
对于Windows用户,请使用GitBash For Windows。内置的Windows cmd不适用此方法。
下面是在Windows上使用标准cmd.exe shell的失败解决方案列表(为您节省一些试错时间!):
git commit -m 'Hello Enter不起作用:它不会要求新的行 git commit -m "Hello输入idem git commit -m "Hello^输入idem git commit -m 'Hello^ Enter World'看起来很正常,因为它会问"More?",并允许写新的一行,但最后当执行git log时,你会看到它仍然是一行消息…
TL;DR:即使在Windows上,命令行解析的工作方式不同,^允许多行输入,在这里也没有帮助。
最后,git commit -e可能是最好的选择。
我希望这不会偏离发布的问题太远,而是设置默认编辑器,然后使用
git commit -e
可能会舒服得多。
我在Mac上使用zsh,我可以在双引号(")内发布多行提交消息。基本上,我一直键入并按回车键获取新行,但直到我关闭引号并返回,消息才被发送到Git。
当然,它是如何完成的取决于您的shell。在Bash中,可以在消息周围使用单引号,也可以只打开引号,这将使Bash提示另一行,直到关闭引号。是这样的:
git commit -m 'Message
goes
here'
或者,你可以使用“here文档”(也称为heredoc):
git commit -F- <<EOF
Message
goes
here
EOF