10

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

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

git tag -a v1.0.0

* Change number 1
* Change number 2
#
# Write a tag message
#

但是,如果我使用 -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
....

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

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

4

4 回答 4

15

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

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

来自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. (...)

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

于 2012-05-21T17:49:45.920 回答
5

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

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

另一种选择是将格式化的消息放在(临时)文件中,并用于git tag -F <filename> <tag>从该文件中读取消息。

于 2012-05-21T17:58:55.913 回答
1

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

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

应该管用。

于 2012-09-04T21:23:53.653 回答