web-dev-qa-db-ja.com

指定されたGitブランチが存在するかどうかを確認するシェルスクリプト?

シェルスクリプトを使用して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コマンドが正確な名前と一致せずにブランチ名を見つけることです。つまり、I grep nameその後、名前branch-nameが一致します。

これを行うより良い方法はありますか?

ありがとう!

23
hzxu

注:これは常にtrueを返します。受け入れられたとしても、これは質問に対する正しい答えではありません。

常に\<\>のような名前の周りにWordの境界を使用できますが、代わりにGitに作業を任せます:

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

Heathのソリューションは気に入っていますが、まだgrepにパイプしたい場合は、次のような正規表現アンカーを使用して、部分文字列の一致を除外できます。

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

コマンドの出力はインデントされているため、space文字クラスを使用する必要があることに注意してください。

5
David