我想在方括号中自动将我的提交消息与我的分支名称一起添加,例如:
[分行名称]进行了更改
这是我的commit-msg钩子:
#!/bin/sh
#
# Automatically adds branch name and branch description to every commit message.
#
BRANCH=$(git symbolic-ref HEAD | awk -F'/' '{print $3}')
if [ -n "$BRANCH" ]; then
echo ["$BRANCH"'] '$(cat "$1") > "$1"
fi
如果我使用 git commit -am"提交消息" ,此挂钩工作正常。但是如果我只使用 git commit 来使用完整的编辑器,我的提交消息就会附加注释,例如:
[TestHook] Test # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On
我从web上的一个例子中复制了commit-msg脚本,并根据我的需要进行了一些改动。但是,我没有bash脚本专家所以我怀疑我的脚本存在问题。希望得到一些帮助!
谢谢!
答案 0 :(得分:2)
经过大量谷歌搜索,我更正了我的脚本使用grep而不是cat,现在它的工作非常精彩:
#!/bin/sh
#
# Automatically adds branch name to every commit message.
#
BRANCH=$(git symbolic-ref HEAD | awk -F'/' '{print $3}')
if [ -n "$BRANCH" ]; then
echo ["$BRANCH"'] '$(egrep -v '(^#|^\s*$|^\s*\t*#)' "$1") > "$1"
fi
grep命令会排除以#开头的行,或者以空格/制表符开头,然后是#(不是完全必要的,但无论如何都要扔掉它)。
答案 1 :(得分:1)
您可以尝试更改提交消息模板(请参阅git commit
):
编辑提交消息时,使用给定文件中的内容启动编辑器
commit.template
配置变量通常用于向命令隐式提供此选项。
尝试:
git config commit.template /path/to/empty/commit/message/template
如果该模板文件为空,则git commit
不应附加任何内容。