如何在Git 2.23中禁用“ git checkout”?

ezz*_*ron 2 git

现在,Git 2.23已支持git switchgit restore,我想通过阻止git checkout工作来重新训练我的肌肉记忆。如何使git checkout输出显示错误消息并以非零状态退出?

bk2*_*204 5

没有一种方法可以完全满足您的要求。

Git不允许您使用别名覆盖内置子命令,这是有充分理由的。您正在使用的其他工具可能会使用,git checkout并且允许您用其他工具替代它会破坏所有这些工具。

但是,您可以git在shell配置中覆盖该命令,以使如果子命令为checkout,则该命令将失败,如下所示:

git () {
    if [ "$1" = "checkout" ]
    then
        echo "Don't use checkout; use switch or restore." >&2
        return 1
    else
        command git "$@"
    fi
}
Run Code Online (Sandbox Code Playgroud)

只要仅为交互式外壳程序而不是非交互式外壳程序(例如脚本)加载此文件,它就应该起作用并且不会对任何事物产生负面影响。由于尚未指定要使用哪个选项,因此在您选择的shell中如何执行此操作是一项练习。

另外,请注意手册页中的git switch和,这些警告git restore是实验性的,可能会更改。