如何禁用通过命令行设置git提交信息的功能?

7
我发现一次性指定提交信息让我容易写出短小的一行提交信息,比如 "git commit -m“fix things"。但是如果我忘记了-m选项并且编辑器弹出来了,我更有可能写出一个好的提交信息。
过去,我通过禁用我不想使用的功能来养成习惯,例如:我禁用了vim中的箭头键,最终让我使用hjkl。这很有效,我想尝试对Git提交信息做同样的事情,我希望Git(或Bash或Zsh)在我尝试使用"commit -m"时提醒我。
我可以完全围绕git命令编写包装器,但也许你有其他解决方案,我可能会学到一些很酷的东西!我接受各种神奇和诡计。

不能立即测试,但可以尝试创建一个函数 mgit() { git "$@" -m ""; },并使用 mgit 替代 git。 如果 git 仅考虑后续的重复参数,则应该可以工作。 - devnull
或者像这样 function git() { args="$@"; if [ -z $(grep "commit" <<< "$args") ]; then git "$@"; else git "$@" -m ""; fi },但正确的方法是使用钩子。 - Малъ Скрылевъ
@МалъСкрылевъ @devnull 添加-m ""不会影响之前的选项。git commit -m "fix" -m ""仍然只创建带有消息“fix”的提交。 - iain
1个回答

6
您可以在您的.git/hooks目录下创建一个prepare-commit-msg钩子来检查消息长度,如果消息太短,则拒绝提交:
#!/bin/bash
# Remove whitespace, at least 50 characters should remain.
if (( $(sed 's/\s//g' "$1" | wc -c) < 50 )) ; then
    echo Message too short. >&2
    exit 1
fi

+1 我使用这种技巧来确保我的提交消息是格式良好的 - Enrico Campidoglio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接