Using GitPython module to get remote HEAD branch

git, gitpython, python

Solution

I just saw your question I was wondering about this gitPython, looks like really nice tool, and I was looking for this specific question in the GitPython documentation with no lucky but if you search on github you will see a lot of tests there and there's a test for that.

You will see something like this when you search for "remove new branch":

# remove new branch
Head.delete(new_remote_branch.repo, new_remote_branch)

GitPython Reference

Problem

I'm trying to use GitPython to write some Python scripts which I can use it to simplify my daily tasks as I manage many branches. I'm also quite new for Python when it comes to writing complicated scripts. This is the API I used: GitPython API doc I want to write it in GitPython that simply does the following and parse out the part which shows me the HEAD remote branch is pointing. In another word, I want to basically get the `remotes/origin/HEAD` ``` $ git branch -a master * branch_to_remove remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/testing ``` I browse the API doc many times, at first I'm having trouble to understand the Python format of these API docs, and I couldn't find anything useful to use to do for this other than `remote_head` in `class git.refs.reference.Reference(repo, path, check_path=True)` But I don't even know how to call/initialize it. Here is what I had so far, and you can tell what I'm trying to do, to simply reset to 'no branch' state and remove the current branch I'm on: ``` import git from git import * repo = git.Repo("/some/path/testing") repo.git.branch() [some code to get the remotes/origin/HEAD, set it to remoteHeadBranch ] repo.git.checkout(remoteHeadBranch) # this should reset the Git back to 'no branch' state repo.git.checkout(D="branch_to_remove") ``` Any help is much appreciated! Thanks.

Original source