我怎样才能禁用;git checkout";在Git2.23中?

我怎样才能禁用;git checkout";在Git2.23中?,git,Git,现在Git 2.23支持了Git开关和Git恢复,我想通过阻止Git签出工作来重新训练我的肌肉记忆。如何使git checkout输出一条错误消息并以非零状态退出?没有一种方法可以准确地执行您的请求 Git不允许您使用别名重写内置子命令,这是有充分理由的。您正在使用的其他工具可能会使用git checkout,允许您使用其他工具覆盖它会破坏所有工具 但是,您可以在shell配置中重写git命令,以便在子命令为checkout时失败,如下所示: git () { if [ "$1" = "

现在Git 2.23支持了
Git开关
Git恢复
,我想通过阻止
Git签出
工作来重新训练我的肌肉记忆。如何使git checkout输出一条错误消息并以非零状态退出?

没有一种方法可以准确地执行您的请求

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

但是,您可以在shell配置中重写
git
命令,以便在子命令为
checkout
时失败,如下所示:

git () {
    if [ "$1" = "checkout" ]
    then
        echo "Don't use checkout; use switch or restore." >&2
        return 1
    else
        command git "$@"
    fi
}
只要只为交互式Shell加载,而不为非交互式Shell(如脚本)加载,就应该可以工作,并且不会对任何事情产生负面影响。如何在您选择的shell中实现这一点是一个练习,因为您尚未指定要使用的shell

另外,请注意手册页面中的警告,即
git开关
git还原
是实验性的,可能会改变