我如何创建git钩子来预先发送带有分支名称的提交消息?
我读到它提供了一个稍微有效的我如何创建git钩子来预先发送带有分支名称的提交消息?,git,bash,Git,Bash,我读到它提供了一个稍微有效的prepare commit msg,我对它做了一些修改: #!/bin/sh # # Automatically adds branch name and branch description to every commit message. # # todo: # * breaks merge commit message # * breaks git commit --amend NAME=$(git branch | grep '*' | sed 's/*
prepare commit msg
,我对它做了一些修改:
#!/bin/sh
#
# Automatically adds branch name and branch description to every commit message.
#
# todo:
# * breaks merge commit message
# * breaks git commit --amend
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
走“快乐之路”,即:
将按预期工作,输出:
some-modular-app git:test-commit-hooks ❯ log | grep 9406dfb
* 9406dfb - [test-commit-hooks] Make edit (2 hours ago) <mbigras>
为了进入vim,由于某种原因,新行被删除,这迫使人们编辑消息,将注释放在自己的行上,如下所示:
二,
将导致与1相同的问题。但它也会在前面加上第二个[分支名称]
,如下所示
我如何修改上面的脚本来解决用例1和用例2的问题
谢谢请在钩子中尝试以下代码片段:
NAME=$(git branch | grep '*' | sed 's/* //')
echo -n "$NAME"': '|cat - "$1" > /tmp/out && mv /tmp/out "$1"
答案隐藏在你的脑海里。另见中所述
git commit
git commit --amend
NAME=$(git branch | grep '*' | sed 's/* //')
echo -n "$NAME"': '|cat - "$1" > /tmp/out && mv /tmp/out "$1"