如何判断git-hook中是否有rebase?

Ale*_* B. 4 git bash githooks

基于这个问题我做了一个 git hookprepare-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 
Run Code Online (Sandbox Code Playgroud)

它在简单的提交上工作得很好。示例 -[issue14020]: some text message如果在 issues14020 分支中进行提交。

但后来我做了一个变基,我收到了这样的消息[(no branch)]: [issue14020]: some text message。有什么办法可以跳过这个“无分支”部分吗?

mpl*_*plf 6

如果你最终处于无头状态,你会在 rebase 提交上得到“(无分支)”。

如果您处于无头模式,则不要git branch使用它来获取当前分支名称,而是使用NAME=$(git rev-parse --abbrev-ref HEAD)它将返回当前分支或“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
Run Code Online (Sandbox Code Playgroud)