【问题标题】:Including the current branch name in the commit template在提交模板中包含当前分支名称
【发布时间】:2021-12-22 15:57:39
【问题描述】:

我为 git 设置了一个提交模板,我想在其中包含当前分支的名称。我通常将分支设置为 bug id,它可以帮助我填写样板文件,例如:

Bug : $BUG

如何使用 git 评论模板执行这样的替换?

【问题讨论】:

  • 哦,误读了 sry :( 你可以为 git commit 设置一个别名,它首先找到当前分支,将其写入一个临时文件并使用 --template 参数调用 git commit。跨度>

标签: git


【解决方案1】:

我可能只是使用prepare-commit-msg 挂钩将其添加到文件中。从(链接的)联机帮助页:

这个钩子在准备好默认日志消息之后,编辑器启动之前由 git commit 调用。

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

如果退出状态不为零,git commit 将中止。

钩子的目的是在原地编辑消息文件...

你可以通过git symbolic-ref HEAD获取当前分支。

您可以完全绕过模板,并让钩子预先/插入/附加分支名称。最简单的情况,追加,脚本只是一个 shebang 行,然后是git symbolic-ref HEAD >> "$1"。如果您想嵌入它,请使用您最喜欢的方法 - 将原件移到一边、写入和附加,最易读,但在 cmets 中链接的方法当然也可以。

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

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

【讨论】:

  • 感谢您的回答,很准确。作为参考,我设法在该行前面加上来自stackoverflow.com/questions/54365/… 的说明
  • @Robert Munteanu 是否有机会将您的整个解决方案放在答案中,对于懒惰的人?我肯定会赞成的:)谢谢...
  • @Yar:就我个人而言,我宁愿使用临时文件来读取一些东西,也不愿稍后我必须尝试破译一些文件描述符魔法。 mv "$1" "$1.tmp"; git symbolic-ref 2> /dev/null > "$1"; cat "$1.tmp" >> "$1"; rm "$1.tmp"
  • @Yar:试试branch=$(git symbolic-ref HEAD|sed s#refs/heads/##) exec 3<> "$1" && awk -v TEXT="[$branch]" 'BEGIN {print TEXT}{print}' "$1" >&3
  • 使用git rev-parse --abbrev-ref HEAD 可以避免上面的sed。
【解决方案2】:

只是将 Jefromi 答案中的 cmets 拼凑在一起,我最终得到了这样的结果。当然它可能会更紧(如果我知道我在做什么):

tempFile='/tmp/git-commit-template'
git config commit.template "$tempFile"
rm $tempFile
branch=$(git symbolic-ref HEAD|sed s#refs/heads/##) exec 3<> "$tempFile" && awk -v TEXT="[$branch]" 'BEGIN {print TEXT}{print}' "$tempFile" >&3
git add .
git commit -a

【讨论】:

  • 嗨,Dan,我尝试了命令 branch=$(git symbolic-ref HEAD|sed s#refs/heads/##) exec 3&lt;&gt; "$tempFile" 并尝试了 echo $branch,我没有看到正在打印的分支名称的值?
  • 我不记得了,但我认为您必须手动创建 tempfile 目录
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 2017-08-11
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2020-04-04
    • 2022-08-02
    • 2021-08-07
    • 2017-10-17
    相关资源
    最近更新 更多