【问题标题】:Git commit message messed up when stored in a variable [duplicate]存储在变量中时,Git 提交消息搞砸了[重复]
【发布时间】:2018-05-26 19:53:55
【问题描述】:

我有一个 Git 提交,它有一个摘要,然后是一些描述。所以当我通过git log --format=%B -n 1 <commit> 看到提交消息时,它看起来像这样:

Commit Summary Line * Commit Description Line 1 * Commit Description Line 2 * Commit Description Line 3

但是,当我尝试将其存储在 Bash 变量中时:

message=$(git log --format=%B -n 1 <commit>)

然后我尝试echo $message,我从当前目录中获取文件夹名称与提交消息中的每一行混合。更重要的是,我什至没有看到提交消息中的所有行,只是其中的一些。所以,$message 看起来像这样:

Commit Summary Line folder1 folder2 folder3 Commit Description Line 1 folder1 folder2 folder3 Commit Description Line 3

对这种行为有什么解释吗?我只希望$message 包含完整提交消息中的所有行。我什至不在乎它们是在新行中还是全部在一行中,我只想将所有行都存储在字符串变量中。我如何做到这一点?

【问题讨论】:

  • 正如我常说的,当有疑问时...引用它!

标签: git bash github git-commit


【解决方案1】:

这里似乎有点流氓pathname expansion* 引起。尝试在您的 message 变量周围添加一对引号,您应该会很好!

echo "$message" 

【讨论】:

  • 在 shell 脚本中,使用变量而不用双引号保护它们几乎总是一个错误——出错的方法有很多!
  • @GordonDavisson – 明智的话,我的朋友!我数不清有多少次丢失的报价毁了我的一天。
猜你喜欢
  • 2017-06-15
  • 2022-01-05
  • 2021-01-25
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 2021-10-30
  • 1970-01-01
  • 2013-10-28
相关资源
最近更新 更多