阻止 git 创建使用远程名称的分支?

Prevent git from creating branches that use names of remotes?

我经常不小心错误地检查远程跟踪分支:

git checkout -b origin/fixbugs

-b 应该是 -t

这个错误创建了一个名为“origin/fixbugs”的分支。当分支名称以“origin/”(或任何其他远程名称)开头时,我如何让 git 给我一个错误而不是创建此分支?

首先,您不必使用 -t 选项,因为 git checkout has a guess mode.

 git checkout fixbugs

If <branch> is not found but there does exist a tracking branch in exactly one remote (call it <remote>) with a matching name, and --no-guess is not specified, treat as equivalent to:

$ git checkout -b <branch> --track <remote>/<branch>

二、使用新的git switch command (with Git 2.23+, Q3 2019):

  • git checkout有相同的猜测模式,所以一个简单的git switch fixbugs就够了。
  • 如果有 -t 选项,但没有 -b 选项,所以在这种情况下你会得到一个错误!

从 v2.28 开始,有一个 reference-transaction 挂钩,您可以使用它来审查所有此类更新。

#!/bin/bash
case  in
prepared)
        while IFS='/ ' read old new refs type name rest; do
                if [[  $type != remotes && $new = *[^0]* ]] && git config remote.$name.url >&-
                then echo $name${rest:+/$rest} would pun remote name $name
                     exit 1
                fi
        done
        ;;
esac

除非您已经开始使用多级远程名称,否则您会这样做,如果您愿意,可以加强检查循环。