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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With