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

Git 在提交模板中包含当前分支名称,git,Git,我为git设置了一个提交模板,我想在其中包含当前分支的名称。我通常将分支设置为bug id,这将有助于我填写样板文件,例如: Bug : $BUG 如何使用git注释模板执行这种替换?我可能只是使用钩子将其添加到文件中。从(链接的)手册页: git commit在准备默认日志消息之后和编辑器启动之前立即调用该钩子 它需要一到三个参数。第一个是包含提交日志消息的文件名。第二个是提交消息的源。。。[消息、模板、合并、挤压或提交] 如果退出状态为非零,git commit将中止 钩子的作用是就地编辑

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

Bug : $BUG
如何使用git注释模板执行这种替换?

我可能只是使用钩子将其添加到文件中。从(链接的)手册页:

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”的操作。。我相信你可以想象很多其他的变化


对于某些类型的提交(第二个参数),您可能希望禁止这种行为,或者如果您使用样板替代方法,则仅当第二个参数为“template”时才启用这种行为。

只要将Jefromi的答案中的注释拼凑在一起,我就会得到类似的结果。当然可以更紧(如果我知道我在做什么):

tempFile='/tmp/git提交模板'
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添加。
git提交-a

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

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

哦,误读了sry:(您可以为git commit设置别名,它首先找到当前分支,将其写入临时文件,并使用--template参数调用git commit。感谢您的回答,它是即时的。作为参考,我设法用@Robert Munteanu的指示预先结束了这一行,如果您想将整个解决方案放在回答中,f或者懒惰的人?我肯定会投票:)谢谢…@Yar:就我个人而言,我宁愿用一个临时文件来读一些东西,也不愿意用一些文件描述符魔法,我以后再去破解。
mv“$1”“$1.tmp”;git symbolic ref 2>/dev/null>“$1”;cat“$1.tmp”>“$1”;rm“$1.tmp”
@Yar:try
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的需要。嗨,丹,我试过命令
branch=$(git symbolic ref HEAD s/heads/#exec)$3”
并尝试
回显$branch
,我看不到正在打印的branch name的值?我不记得了,但我认为您必须手动创建tempfile目录
$ git config --global alias.com '!sh -c "bug=`git symbolic-ref HEAD|sed s#refs/heads/##`; git commit -em \"BUG: \${bug}\""'
$ git com