我正在使用下面的命令来查找在我的存储库中是否存在一个带有branch-name的本地git分支。这对吗?有没有更好的办法?
请注意,我是在脚本中执行此操作的。因此,如果可能的话,我希望使用管道命令。
git show-ref --verify --quiet refs/heads/<branch-name>
# $? == 0 means local branch with <branch-name> exists.
我正在使用下面的命令来查找在我的存储库中是否存在一个带有branch-name的本地git分支。这对吗?有没有更好的办法?
请注意,我是在脚本中执行此操作的。因此,如果可能的话,我希望使用管道命令。
git show-ref --verify --quiet refs/heads/<branch-name>
# $? == 0 means local branch with <branch-name> exists.
当前回答
这是我实现的方法,看起来更稳定
$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
其他回答
在脚本中使用:
git show-ref -q --heads <branch-name>
当且仅当<branch-name>存在时,该函数将退出0 作为一个地方分支机构。
例子:
if git show-ref -q --heads <branch-name>; then
echo 'Branch exists'
fi
差不多了。
只要忽略verify和quiet如果分支存在,你就得到哈希值如果分支不存在,你就什么都得不到。
将其赋值给一个变量并检查是否为空字符串。
exists=`git show-ref refs/heads/<branch-name>`
if [ -n "$exists" ]; then
echo 'branch exists!'
fi
是的,有一个。
git rev-parse [<options>] <args>…
请参阅https://git-scm.com/docs/git-rev-parse,在那里可以找到参数集和函数。
git rev-parse --verify <branch-name>
当我在搜索引擎上搜索“git检查分支是否存在”时,这个页面是我看到的第一个页面。
我得到了我想要的,但我想提供一个更新的答案,因为最初的帖子是2011年的。
git rev-parse --verify <branch_name>
这本质上与接受的答案相同,但您不需要键入“refs/heads/<branch_name>”
从shell脚本来看,这将是
if [ `git rev-parse --verify main 2>/dev/null` ]
then
...
fi
据我所知,这是在脚本中实现它的最佳方式。我不确定是否有更多的补充,但可能有一个答案只是说“这个命令做你想要的一切”:)
唯一需要注意的是分支名称中可能有令人惊讶的字符,因此可能需要引用<branch-name>。