Shell script проверить, существует ли указанная ветвь Git?

Мне нужно создать ветвь Git, используя оболочку script, но поскольку ветка может существовать, мне нужно знать об этом. В настоящее время я использую:

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 будет соответствовать.

Так есть лучший способ сделать это?

Спасибо!

Ответы

Ответ 1

Вы всегда можете использовать границы слов вокруг имени типа \< и \>, но вместо этого Git выполните работу для вас:

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

Ответ 2

Мне нравится решение Heath, но если вы все еще хотите подключиться к grep, вы можете использовать привязки regex, похожие на следующие, чтобы исключить совпадение подстроки:

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

Обратите внимание, что вам нужно использовать класс символов space, потому что вывод команды имеет отступ.