在提交模板中包含当前分支名称

Rob*_*anu 22 git

我有一个为git设置的提交模板,我想在其中包含当前分支的名称.我通常将分支设置为bug id,这将有助于我填写样板文件,例如:

Bug : $BUG
Run Code Online (Sandbox Code Playgroud)

如何使用git注释模板执行此类替换?

Cas*_*bel 19

我可能只是使用prepare-commit-msg钩子将其添加到文件中.从(链接)手册页:

在准备默认日志消息之后,在编辑器启动之前,由git commit调用此挂接.

它需要一到三个参数.第一个是包含提交日志消息的文件的名称.第二个是提交消息的来源... [消息,模板,合并,壁球或提交] ...

如果退出状态为非零,则git commit将中止.

钩子的目的是在适当的位置编辑消息文件...

你可以得到当前的分支git symbolic-ref HEAD.

您可以完全绕过模板,并使钩子前置/插入/追加分支名称.最简单的情况,附加,脚本只是一个shebang线,然后git symbolic-ref HEAD >> "$1".如果你想嵌入它,请使用你最喜欢的方法 - 最可读的方法是将原文放在一边,写入和追加,但注释中链接的方法肯定也有效.

如果您更喜欢使用带占位符的模板,您可以执行类似的操作sed -i "s/Bug : \$BUG/BUG : $(git symbolic-ref HEAD)/" "$1".我相信你可以想象很多其他的变化.

如果您使用样板替换方法,您可能希望针对某些类型的提交(第二个参数)抑制此行为,或者甚至仅在第二个参数为"模板"时将其打开.

  • 使用 `git rev-parse --abbrev-ref HEAD` 将避免上面对 sed 的需要。 (2认同)

ssc*_*eck 5

使用 git 别名但没有模板的解决方案:

$ git config --global alias.com '!sh -c "bug=`git symbolic-ref HEAD|sed s#refs/heads/##`; git commit -em \"BUG: \${bug}\""'
$ git com
Run Code Online (Sandbox Code Playgroud)