如何在git标记消息中包含换行符

Eri*_*son 7 git

当我在git中标记版本化代码时,我喜欢在标记消息中使用项目符号.

这可以通过带注释的标签轻松完成:

git tag -a v1.0.0

* Change number 1
* Change number 2
#
# Write a tag message
#
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用-m选项尝试相同的标记,则标记消息不是我所期望的:

git tag -a v1.0.0 -m "* Change number 1\n* Change number 2"

git show v1.0.0

...

* Change number 1\n* Change number 2
....
Run Code Online (Sandbox Code Playgroud)

'\n'被字面解释为字符'\'和'n'而不是换行符.我想使用该-m选项,以便我可以自动化标记过程.

有没有办法git tag-m选项中包含实际的换行符?

Azi*_*ziz 12

我找到的最接近的解决方案是使用多个-m选项,每行一个.例如:

git tag -a v1.0.0 -m "* Change number 1" -m "* Change number 2"
Run Code Online (Sandbox Code Playgroud)

来自git-tag手册页:

-m <msg>
   Use the given tag message (instead of prompting). If multiple
   -m options are given, their values are concatenated as separate
   paragraphs. (...)
Run Code Online (Sandbox Code Playgroud)

更新:检查"从命令行添加换行符到git commit -m"以获取更多基于shell的解决方案.

  • 这将在消息之间添加额外的换行符,这可能是不希望的。 (3认同)

Max*_*asy 5

假设您使用的是 unix shell,则换行符的语法是错误的。

git tag -a v1.0.0 -m "* Change number 1
* Change number 2"
Run Code Online (Sandbox Code Playgroud)

应该管用。

  • 那 `git tag -a v1.0.0 -m $'* Change number1\n* Change number 2'` 怎么样? (4认同)

Muh*_*que 5

最佳解决方案是直接从默认代码编辑器编写提交和标记消息。

  • 使用命令git tag -a v1.0.0并按回车键。不要写-m
  • 它将打开您的默认代码编辑器,编写消息,保存并关闭文件。
  • 命令行将恢复。