是否可以在 git 中禁用“危险”命令行选项?

Bil*_*one 5 git git-config

按照习惯,我会经常修改我的 repo,并使用一次添加/提交它 git commit -am 'my commit message'

有时我只想添加几个修改过的文件,所以我会发出准备git add命令来精心设置我的暂存区,并将准备提交的更改与半生不熟的更改分开。

然后,我会git commit -am '...'像往常一样发出相同的命令来完成整个事情。

有没有办法让我禁用该git commit -a选项,和/或在我使用-a开关时发出警告?我想训练自己摆脱这种粗略的习惯......

and*_*otn 5

创建一个名为的包装器脚本git,它将捕获坏命令并将好的命令转发到真正的git. 把它放在你的前面$PATH

#!/bin/bash

for ARG in "${@}"; do
    if [ "${ARG}" = "-am" ]; then
        echo "Hey! Don’t do that!" 1>&2
        exit 1
    fi
done

exec /usr/bin/git "${@}"
Run Code Online (Sandbox Code Playgroud)

几乎所有 git 命令都可以正常工作:

$ git pull
remote: Counting objects: 1183, done.
remote: Compressing objects: 100% (728/728), done.
remote: Total 1183 (delta 771), reused 632 (delta 455)
Receiving objects: 100% (1183/1183), 1.12 MiB | 1.46 MiB/s, done.
...
Run Code Online (Sandbox Code Playgroud)

但那些你不想工作的人不会:

$ git commit -am "foo"
Hey! Don’t do that!
Run Code Online (Sandbox Code Playgroud)

  • 如果用户调用`git commit -am"blah blah"`,这将无法正常工作 (4认同)