禁用git中的-m

禁用git中的-m,git,bash,Git,Bash,我试图训练自己编写更好的提交消息,因此我在我的~/.gitconfig [commit] template = ~/.gitmessage.txt 难题是我几乎总是使用: git commit -m "Message here" 有时: git commit -am "Message here" 如何防止自己使用-m标志,以便显示模板并提醒我使用它 我不需要在项目中强制执行这一点,但我想戒掉“-m” Ubuntu/Bash是我的环境。你也可以编写一个名为git的shell脚本,并在

我试图训练自己编写更好的提交消息,因此我在我的
~/.gitconfig

[commit]
    template = ~/.gitmessage.txt
难题是我几乎总是使用:

git commit -m "Message here"
有时:

git commit -am "Message here"
如何防止自己使用-m标志,以便显示模板并提醒我使用它

我不需要在项目中强制执行这一点,但我想戒掉“-m”


Ubuntu/Bash是我的环境。

你也可以编写一个名为
git
的shell脚本,并在真正的git之前将其放入你的路径中。在它里面,您只需检查-m的参数,如果存在,则嘲笑您自己,如果不调用真正的git二进制文件


有关如何转发args的示例,请参见。

我没有预见到一个可能会让你改变习惯的答案

但您可以尝试使用别名。这里唯一的诀窍是摆脱旧习惯,用指向模板的别名替换它


小贴士:养成一个习惯平均需要30天

把它放到你的
中。bashrc

git() {
  for arg
  do
    if [[ $arg == -m* || $arg == -[^-]*m* ]]
    then
      annoy_me
      return 1
    fi
  done
  command git "$@"
}
annoy_me() { 
  echo "Stop using -m, $USER!" 
  echo "You are now in time out."
  settings=$(stty -g)        
  stty raw
  sleep 15
  stty "$settings"
}
骚扰我
此处等待15秒,无法从该终端终止


您可以根据您认为适当恼人的内容来替换它,例如<代码> SL<代码> >代码> MpRead。第100卷SpabeEngHythsWaNab.MP3DEV/NULL/<代码> < /P> > <代码> Git提交< /代码>别名,如<代码> GMIX?老实说,我不明白你怎么能一开始就少打字;)那么,像这样的建议如何防止意外的数据提交呢?@pmr-这是关于克服“肌肉记忆”的。我想马上做一个简短的别名,因为我正在做类似的事情:。然而,对于“-m”的情况,并没有什么有趣的输出结果让我使用提交别名,所以我需要考虑使用一个大棒,而不是胡萝卜:-)这很可爱,尽管寻找

-*m*
会很霸道-我不能再写
git merge--no commit
?出于好奇,我最终从@另一个家伙的答案中得出以下结论:我非常推荐使用此选项来禁用
-a
开关。这通常是我对存储库所做的最具破坏性的事情,并阻止我将更改分离为正确的提交。