我可以为git使用脚本化的提交模板吗?

Pet*_*ans 32 git pre-commit-hook git-commit

我们正在处理票证,当我们在第一行的git commit消息中使用票号时,则使用提交消息更新票证.

为简单起见,我们总是使用提交编号处理分支.

现在我想要提交一个提交消息,其中已经填写了票号.

它必须是可能的,因为分支已经在提交模板中,但是在由git删除的注释中.我曾经几次搜索过文档和网页,但我一定要找错字,因为我找不到它.

有人可以帮忙吗?

Wal*_*ndt 40

您可能想prepare-commit-msg在本地存储库上设置一个钩子.它可能看起来像这样(假设分支被命名为'work-on-ticket-XXXX':

#!/bin/sh
ORIG_MSG_FILE="$1"
TEMP=`mktemp /tmp/git-XXXXX`

TICKETNO=`git branch | grep '^\*' | cut -b3-`

(echo "Work on ticket #$TICKETNO"; cat "$ORIG_MSG_FILE") > "$TEMP"
cat "$TEMP" > "$ORIG_MSG_FILE"
Run Code Online (Sandbox Code Playgroud)

把这样的东西(标记为可执行文件)放入.git/hooks/prepare-commit-msg.你当然可能需要调整和详细说明.

  • 太好了!获取当前分支名称的更典型方法可能是`git rev-parse --abbrev-ref HEAD`. (11认同)

sig*_*ine 5

看起来你应该能够通过使用.git/hooks/pre-commit-msg来做到这一点

一个简单的例子是:

#!/bin/sh
# $1 contains the file with the commit msg we're about to edit.
# We'll just completely clobber it for this example.
echo "Hello" > "$1"
Run Code Online (Sandbox Code Playgroud)

这将使您的提交以"Hello"开头.显然,因为它是一个脚本,你可以在这里工作,填写你的票号和任何其他信息.在.git/hooks /目录中应该有一个pre-commit-msg.sample,告诉你如果需要其他东西,脚本会收到哪些args.