我正在从命令行使用Git,并试图在提交消息中添加换行符(使用Git commit -m "")而不进入Vim。
这可能吗?
我正在从命令行使用Git,并试图在提交消息中添加换行符(使用Git commit -m "")而不进入Vim。
这可能吗?
当前回答
遗憾的是,git似乎不允许在其消息中出现任何换行符。上面已经有各种合理的解决方案,但在编写脚本时,这些都很烦人。这里文档也可以工作,但是处理起来可能有点麻烦(比如yaml文件)
以下是我所做的:
git commit \
--message "Subject" \
--message "First line$(echo)Second line$(echo)Third Line"
虽然这仍然很难看,但它允许“一行程序”,这可能仍然有用。由于字符串通常是变量或与变量组合在一起,因此可以将丑陋的字符串保持到最小。
其他回答
在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
我希望这不会偏离发布的问题太远,而是设置默认编辑器,然后使用
git commit -e
可能会舒服得多。
比如
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文档:
- m <味精> ——消息= <味精> 使用给定的<msg>作为提交消息。如果给出了多个-m选项,它们的值将作为单独的段落连接起来。
所以,如果你正在寻找分组多个提交消息,这应该做的工作:
git commit -m "commit message1" -m "commit message2"
遗憾的是,git似乎不允许在其消息中出现任何换行符。上面已经有各种合理的解决方案,但在编写脚本时,这些都很烦人。这里文档也可以工作,但是处理起来可能有点麻烦(比如yaml文件)
以下是我所做的:
git commit \
--message "Subject" \
--message "First line$(echo)Second line$(echo)Third Line"
虽然这仍然很难看,但它允许“一行程序”,这可能仍然有用。由于字符串通常是变量或与变量组合在一起,因此可以将丑陋的字符串保持到最小。