Есть ли лучший способ узнать, существует ли локальная ветка git? - PullRequest
159 голосов
/ 02 марта 2011

Я использую следующую команду, чтобы узнать, существует ли в моем хранилище ветка local git с branch-name.Это правильно?Есть ли лучший способ?

Обратите внимание, что я делаю это внутри скрипта.По этой причине я хотел бы держаться подальше от фарфоровых команд, если это возможно.

git show-ref --verify --quiet refs/heads/<branch-name>
# $? == 0 means local branch with <branch-name> exists. 

Обновление

Оказывается, есть другой путь .Спасибо @ jhuynh .

git rev-parse --verify <branch-name>
# $? == 0 means local branch with name <branch-name> exists.

Ответы [ 15 ]

0 голосов
/ 24 июня 2019

Ни git show-ref, ни git rev-parse не работают в моем случае.

$ git --version
git version 2.21.0

$ git show-branch --list
* [master] mybranch commit

$ BRANCH_NAME=mybranch
$ git rev-parse --verify $BRANCH_NAME
fatal: Needed a single revision

$ git show-ref refs/heads/$BRANCH_NAME
<no otput>
$ [ $? == 0 ] && echo "$BRANCH_NAME exists" || echo "$BRANCH_NAME not exists"
mybranch not exists

Я закончил с этим

$ BRANCH_NAME=mybranch
$ SHOW_ALL=`git show-branch --all | grep -w $BRANCH_NAME`
$ [ $? == 0 ] && echo "$BRANCH_NAME exists" || echo "$BRANCH_NAME not exists"
mybranch exists

Вы также можете сделать с файлом сценария

#!/bin/sh
BRANCH_NAME=mybranch
if grep -Fqe $BRANCH_NAME << EOF
`git show-branch --all`
EOF
then
   echo "$BRANCH_NAME exists"
else
   echo "$BRANCH_NAME not exists"
fi
0 голосов
/ 15 октября 2017

Я хотел использовать его в браузере, поэтому я сделал небольшое приложение, которое позволяет вам проверять правильность названия вашей ветки.Он поддерживается git, так что вы знаете, что получаете.

https://branch -checker.herokuapp.com / validate? Branch = not // valid

0 голосов
/ 18 декабря 2016

$ git branch --list $ branch_name |grep $ branch_name, затем проверьте, что возвращаемое значение равно 0 или 1.

0 голосов
/ 26 октября 2016

Для использования в скрипте я рекомендую следующую команду:

git ls-remote --heads <repo_url> "<branch_name>" | wc -l

Обратите внимание, что <repo_url> может быть просто "."указать локальное репо, если вы находитесь внутри его структуры каталогов, пути к локальному репо или адреса удаленного репо.

Команда возвращает 0, если <branch_name> отсутствует 1, если присутствует.

0 голосов
/ 09 декабря 2013

Если вам удастся включить grep.

git branch | grep -q <branch>
...