【问题标题】:How do I disable being able to set the git commit message from the command line?如何禁用从命令行设置 git commit 消息的功能?
【发布时间】:2014-04-14 18:47:33
【问题描述】:

我发现能够一次性指定提交消息会欺骗我编写简短的一行提交消息。我经常以git commit -m "fix things" 结尾。但是,每当我离开-m 选项时,我的编辑器就会弹出,我更有可能写一个好的提交消息。

过去,我通过禁用不想再使用的功能来养成习惯。例如:我禁用了 vim 中的箭头键,这最终让我使用了 hjkl。这非常有效,我想尝试对 git commit 消息做同样的事情。我想让 git(或 bash 或 zsh)因为我试图使用 commit -m 而对我大喊大叫。

可以完全围绕 git 命令编写一个包装器,但也许你有其他解决方案,我可能会学到一些很酷的东西!我对各种魔法和诡计持开放态度。

【问题讨论】:

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

标签: git bash zsh


【解决方案1】:

您可以在您的.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 我使用这种技术来确保我的提交消息是well-formed
猜你喜欢
  • 2015-06-13
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 2020-11-19
  • 2022-01-21
相关资源
最近更新 更多