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

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

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

当前回答

我认为你可以在这里使用git show-branch。

$ git show-branch --list
  [master] test
* [testbranch] test
$ git show-branch testbranch
[testbranch] test
$ echo $?
0
$ git show-branch nonexistantbranch
fatal: bad sha1 reference nonexistantbranch
$ echo $?
128

所以,美元?== 0表示分支存在 你根本不需要去挖掘裁判/人头的管道。只要你不把-r传递给show-branch, 它将只在当地分支机构运作。

其他回答

git show-ref和git rev-parse都不能在我的情况下工作。

$ git --version
git version 2.21.0

$ git show-branch --list
* [master] mybranch commit

$ BRANCH_NAME=mybranch
$ git rev-parse --verify $BRANCH_NAME
fatal: Needed a single revision

$ git show-ref refs/heads/$BRANCH_NAME
<no otput>
$ [ $? == 0 ] && echo "$BRANCH_NAME exists" || echo "$BRANCH_NAME not exists"
mybranch not exists

最后得到了这个

$ BRANCH_NAME=mybranch
$ SHOW_ALL=`git show-branch --all | grep -w $BRANCH_NAME`
$ [ $? == 0 ] && echo "$BRANCH_NAME exists" || echo "$BRANCH_NAME not exists"
mybranch exists

您也可以使用脚本文件

#!/bin/sh
BRANCH_NAME=mybranch
if grep -Fqe $BRANCH_NAME << EOF
`git show-branch --all`
EOF
then
   echo "$BRANCH_NAME exists"
else
   echo "$BRANCH_NAME not exists"
fi

我认为你可以在这里使用git show-branch。

$ git show-branch --list
  [master] test
* [testbranch] test
$ git show-branch testbranch
[testbranch] test
$ echo $?
0
$ git show-branch nonexistantbranch
fatal: bad sha1 reference nonexistantbranch
$ echo $?
128

所以,美元?== 0表示分支存在 你根本不需要去挖掘裁判/人头的管道。只要你不把-r传递给show-branch, 它将只在当地分支机构运作。

这是我实现的方法,看起来更稳定

$branchExists = git ls-remote $gitUrl $gitBranch
if(!([bool]$branchExists))
{
   Write-Host "branch $branchName does not exist"  
} 
else
{
   Write-Host "branch $branchName exists"         
}

如果分支存在,则branchExist变量的内容将类似于:

hashcode of branch name         feature/my_branch

差不多了。

只要忽略verify和quiet如果分支存在,你就得到哈希值如果分支不存在,你就什么都得不到。

将其赋值给一个变量并检查是否为空字符串。

exists=`git show-ref refs/heads/<branch-name>`
if [ -n "$exists" ]; then
    echo 'branch exists!'
fi

在windows批处理脚本有点不同,

git rev-parse --verify <branch>

if %ERRORLEVEL% == 0  (
    echo "Yes"
) else (
    echo "No"
)