Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

How to know which is the default branch #1364

Answered by richtier
dsharma522 asked this question in Q&A
Discussion options

How one can one which is the default branch? main/master?

One can know about this by iterating all heads and then manually check , but that is also have one issue.
What if a repository has both the branches as their branch, which means master, main are some branch and default branch could be one of these or something else.

How to get the default branch ?

You must be logged in to vote

this seems to work repo.remotes.origin.refs.HEAD.ref.remote_head

bit verbose tho!

Replies: 3 comments · 5 replies

Comment options

The default branch is only relevant once, when initializing the repository and git has to decide how to name the only branch in the repository. From there the only questions that can be answered are…

  • which branch is currently checked out
  • which remote is associated with a branch
You must be logged in to vote
4 replies
@dsharma522
Comment options

Is there any way to know the default_branch of repository?

@Byron
Comment options

There is a way to ask for configuration values, search for 'config' here. From there it's, it's using the right configuration key to get or set the value.

@dsharma522
Comment options

I did repo.config_reader() with all possible config levels (system, global,repository) , it outputs ['DEFAULT'] for every case. Tested with many repositories

@Byron
Comment options

Keep debugging and I am sure it will be possible to read config values from it. If that's not the case and reproducible please file an issue.

Comment options

Can we rely upon

repo = git.Repo('repo')
name = repo.heads[0]
print(name)

Will it give the main branch of the repo (main/master or any branch which is main of the repo)

You must be logged in to vote
0 replies
Comment options

this seems to work repo.remotes.origin.refs.HEAD.ref.remote_head

bit verbose tho!

You must be logged in to vote
1 reply
@agowa
Comment options

This doesn't work when refs/remotes/origin/HEAD has not yet been created.
With the git binary the correct command would be git remote set-head origin -a. Does anyone know what the GitPython equivalent to this is?

Answer selected by Byron
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
🙏
Q&A
Labels
None yet
4 participants
Morty Proxy This is a proxified and sanitized view of the page, visit original site.