基于此question我做了一个 git hook prepare-commit-msg
#!/bin/sh
#
# Automatically adds branch name and branch description to every commit message.
#
NAME=$(git branch | grep '*' | sed 's/* //')
DESCRIPTION=$(git config branch."$NAME".description)
echo "[$NAME]"': '$(cat "$1") > "$1"
if [ -n "$DESCRIPTION" ]
then
echo "" >> "$1"
echo $DESCRIPTION >> "$1"
fi
它在简单的提交上工作得很好。示例 - [issue14020]:如果在 issue14020 分支中提交了一些文本消息
。
但后来我做了一个 rebase ,我收到了这样的消息 [(no branch)]: [issue14020]: some text message
。有什么办法可以跳过这个“无分支”部分吗?
最佳答案
如果你最终处于 headless 状态,你会在 rebase 提交上得到“(无分支)”。
与其使用 git branch
获取当前分支名称,不如使用 NAME=$(git rev-parse --abbrev-ref HEAD)
它将返回当前分支名称如果您处于 headless 模式,则分支或“HEAD”。
重新编写你的脚本,然后变成:
NAME=$(git rev-parse --abbrev-ref HEAD);
if [ "$NAME" != 'HEAD' ] ; then
DESCRIPTION=$(git config branch."$NAME".description);
echo "[$NAME]"': '$(cat "$1") > "$1";
if [ -n "$DESCRIPTION" ] ; then
echo "" >> "$1";
echo $DESCRIPTION >> "$1";
fi
fi
关于git - 如何判断git-hook是否有rebase?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16940782/