Подтвердить что ты не робот

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

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

Спасибо!

4b9b3361

Ответ 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, потому что вывод команды имеет отступ.