Lấy cảm hứng từ câu trả lời của Tim được xây dựng dựa trên câu trả lời hàng đầu, hóa ra hook chuẩn bị-cam kết-msg lấy làm đối số về loại cam kết nào đang xảy ra . Như đã thấy trong standard-commit-msg mặc định nếu $ 2 là 'hợp nhất' thì đó là một cam kết hợp nhất. Do đó, công tắc trường hợp có thể được thay đổi để bao gồm hàm addBranchName () của Tim.
Tôi đã bao gồm tùy chọn của riêng mình về cách thêm tên nhánh và tất cả các phần không có chú thích của prepare-commit-msg.sample
hook mặc định .
chuẩn bị-cam kết-msg
#!/bin/sh
addMyBranchName() {
# Get name of current branch
NAME=$(git branch | grep '*' | sed 's/* //')
# First blank line is title, second is break for body, third is start of body
BODY=`cut -d \| -f 6 $1 | grep -v -E .\+ -n | cut -d ':' -f1 | sed '3q;d'`
# Put in string "(branch_name/): " at start of commit message body.
# For templates with commit bodies
if test ! -z $BODY; then
awk 'NR=='$BODY'{$0="\('$NAME'/\): "}1;' $1 > tmp_msg && mv tmp_msg "$1"
else
echo "title\n\n($NAME/):\n`cat $1`\n" > "$1"
fi
}
# You might need to consider squashes
case "$2,$3" in
# Commits that already have a message
commit,?*)
;;
# Messages are one line messages you decide how to handle
message,)
;;
# Merge commits
merge,)
# Comments out the "Conflicts:" part of a merge commit.
perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1"
;;
# Non-merges with no prior messages
*)
addMyBranchName $1
;;
esac