阻止 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
除非您已经开始使用多级远程名称,否则您会这样做,如果您愿意,可以加强检查循环。
我经常不小心错误地检查远程跟踪分支:
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
除非您已经开始使用多级远程名称,否则您会这样做,如果您愿意,可以加强检查循环。