如何强制“git commit -m”打开编辑器

问题描述:

我正在为团队实施git模板提交消息。 我已经 添加一行做了它通过.git/hooks/prepare-commit-msg钩:如何强制“git commit -m”打开编辑器

cat ".gitmessage" >> "$1"

而且我已经配置了以下:

git config --local commit.template .gitmessage

那么,模板功能工作正常,但只当git commit被调用时 没有-m标志。

不幸的是,所有的团队成员的工作流程是:

git add ... 
git commit -m "Some message" 

问:如何强制混帐总是打开编辑器编辑的消息,即使当git commit -m ...命令调用 ?

+4

使用'-m'的重点是你可以跳过打开编辑器并定义消息内联 –

+1

我会禁止他们直接推入上游主机并请求他们创建请求。如果提交消息不符合质量标准,请拒绝拉取请求。 – hek2mgl

+0

您可以将模板保存在某个文件“模板”中,然后运行“git commit -F template”以便从该文件获取提交信息。 (这是您的解决方案的替代方案,但-m本身意味着您要跳过编辑器) – love

您可以修改commit-msg预挂钩来实现此目的。例如,您可以检查提交消息中的行数(请查看下面的示例);使用一些正则表达式来检查模板是否受到尊重;等

#!/bin/bash 

# Check if the number of lines is greater than 3 
commit_msg_file="${1}" 
minimum_lines=3 
num_lines=$(wc -l "${commit_msg_file}" | cut -f1 -d' ') 

if (($num_lines < $minimum_lines)); then 
    echo >&2 "Error!" 
    exit 1 
fi 

检查thisthis以供参考。