Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a better way to find out if a local git branch exists?

Tags:

git

git-branch

People also ask

How do I find a specific branch in git?

There are two ways to clone a specific branch. You can either: Clone the repository, fetch all branches, and checkout to a specific branch immediately. Clone the repository and fetch only a single branch.


When I search for 'git check if branch exists' on a search engine, this page is the first one I see.

I get what I want, but I'd like to provide a updated answer since the original post was from 2011.

git rev-parse --verify <branch_name>

This is essentially the same as the accepted answer, but you don't need type in "refs/heads/"


As far as I know, that's the best way to do it in a script. I'm not sure there's much more to add to that, but there might as well be one answer that just says "That command does everything you want" :)

The only thing you might want to be careful of is that branch names can have surprising characters in them, so you may want to quote <branch-name>.


Almost there.

Just leave out the --verify and --quiet and you get either the hash if the branch exists or nothing if it doesn't.

Assign it to a variable and check for an empty string.

exists=`git show-ref refs/heads/<branch-name>`
if [ -n "$exists" ]; then
    echo 'branch exists!'
fi

I recommend git show-ref --quiet refs/heads/$name.

  • --quiet means there is no output, which is good because then you can cleanly check exit status.

  • refs/heads/$name limits to local branches and matches full names (otherwise dev would match develop)

Usage in a script:

if git show-ref --quiet refs/heads/develop; then
    echo develop branch exists
fi

For use in a script:

git show-ref -q --heads <branch-name>

This will exit 0 if and only if <branch-name> exists as a local branch.

Example:

if git show-ref -q --heads <branch-name>; then
   echo 'Branch exists'
fi

I think you can use git show-branch here.

$ git show-branch --list
  [master] test
* [testbranch] test
$ git show-branch testbranch
[testbranch] test
$ echo $?
0
$ git show-branch nonexistantbranch
fatal: bad sha1 reference nonexistantbranch
$ echo $?
128

So, $? == 0 would indicate that the branch exists and you don't have to dig in to the plumbing of refs/heads/ at all. As long as you don't pass -r to show-branch, it will only operate on local branches.


Yup, there is one.

git rev-parse [<options>] <args>…​

See https://git-scm.com/docs/git-rev-parse where you can find the set of arguments and the function.

git rev-parse --verify <branch-name>