我正在使用下面的命令来查找在我的存储库中是否存在一个带有branch-name的本地git分支。这对吗?有没有更好的办法?

请注意,我是在脚本中执行此操作的。因此,如果可能的话,我希望使用管道命令。

git show-ref --verify --quiet refs/heads/<branch-name>
# $? == 0 means local branch with <branch-name> exists. 

当前回答

在脚本中使用:

git show-ref -q --heads <branch-name>

当且仅当<branch-name>存在时,该函数将退出0 作为一个地方分支机构。

例子:

if git show-ref -q --heads <branch-name>; then
   echo 'Branch exists'
fi

其他回答

让我们将其称为git is_localbranch(您需要在.gitconfig中添加别名)。

用法:

$ git is_localbranch BRANCH

来源:

git branch | grep -w $1 > /dev/null
if [ $? = 0 ]
then
  echo "branch exists"
fi

对于在脚本中使用,我建议使用以下命令:

git ls-remote --heads <repo_url> "<branch_name>" | wc -l

注意,<repo_url>可以只是一个“。”来指定本地回收(如果您在其目录结构中)、本地回收的路径或远程回收的地址。

如果<branch_name>不存在,则该命令返回0,如果存在则返回1。

如果您能设法包括grep。

git branch | grep -q <branch>

当我在搜索引擎上搜索“git检查分支是否存在”时,这个页面是我看到的第一个页面。

我得到了我想要的,但我想提供一个更新的答案,因为最初的帖子是2011年的。

git rev-parse --verify <branch_name>

这本质上与接受的答案相同,但您不需要键入“refs/heads/<branch_name>”

从shell脚本来看,这将是

if [ `git rev-parse --verify main 2>/dev/null` ]
then
   ...
fi
git branch --list $branch_name | grep $branch_name

然后检查返回值是0还是1。