用于检查指定Git分支是否存在的Shell脚本?

时间:2014-01-16 00:28:25

标签: git bash shell grep

我需要使用shell脚本创建一个Git分支,但由于分支可能存在,我需要注意这一点。目前我正在使用:

if [ `git branch | grep $branch_name` ]
then
    echo "Branch named $branch_name already exists"
else
    echo "Branch named $branch_name does not exist"
fi

但问题是grep命令找到分支名称而没有匹配确切的名称,也就是说,如果我grep name那么将匹配名称为branch-name的分支。

那么有更好的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:47)

注意:这总是返回true。这不是问题的正确答案,即使已被接受......

您可以随时使用\<\>等名称旁边的字词边界,而是让Git为您完成工作:

if [ `git branch --list $branch_name` ]
then
   echo "Branch name $branch_name already exists."
fi

答案 1 :(得分:4)

我喜欢Heath的解决方案,但是如果你仍想管道grep,你可以使用正则表达式锚点,类似于以下内容,以排除匹配子字符串:

if [ `git branch | egrep "^[[:space:]]+${branchname}$"` ]
then
    echo "Branch exists"
fi

请注意,您需要使用space字符类,因为命令的输出是缩进的。