$ git ls-remote --heads origin <branch> | wc -l
работает большую часть времени.
Но не будет работать, если ветвь частично совпадает, как показано ниже,
$ git branch -a
creative/dev
qa/dev
$ git ls-remote --heads origin dev | wc -l
2
Используйте
git ls-remote --heads origin <branch> | \
cut -d$'\t' -f2 | \
sed 's,refs/heads/,,' | \
grep ^<branch>$ | wc -l
если хочешь надежным путем.
Если вы хотите использовать в скрипте и не хотите принимать origin
в качестве удаленного по умолчанию, тогда
git ls-remote --heads $(git remote | head -1) "$branch" | \
cut -d$'\t' -f2 | \
sed 's,refs/heads/,,' | \
grep ^"$branch"$ | wc -l
должно работать.
Обратите внимание, что git branch -a | grep ...
не является надежным, так как это может занять некоторое время с момента запуска последнего fetch
.