如何确定git-hook中是否存在rebase?

时间:2013-06-05 13:06:39

标签: git bash githooks

基于此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]: some text message如果在issue14020分支中进行了提交。

然后我做了一个rebase我有这样的消息[(no branch)]: [issue14020]: some text message。有没有办法跳过这个“没有分支”的部分?

1 个答案:

答案 0 :(得分:3)

如果你最终处于无头状态,你会得到关于rebase提交的'(无分支)'。

使用git branch而不是使用NAME=$(git rev-parse --abbrev-ref 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 返回当前分支或“HEAD”。

重新编写脚本,然后变为:

{{1}}