3

この質問に基づいて、私はgitフックを作成しました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]: some text messageissue14020 ブランチでコミットが行われた場合。

しかし、その後、リベースを作成すると、次のようなメッセージが表示されます[(no branch)]: [issue14020]: some text message。この「分岐なし」の部分をスキップする方法はありますか?

4

1 に答える 1

4

ヘッドレス状態になった場合、リベース コミットで「(no branch)」が発生します。

git branchを使用して現在のブランチ名を取得するのではなくNAME=$(git rev-parse --abbrev-ref HEAD)、現在のブランチまたはヘッドレス モードの場合は「HEAD」を返す which を使用します。

スクリプトを作り直すと、次のようになります。

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
于 2013-06-05T13:23:51.257 に答える