def get_branches(local=True, remote_branches=True):

    repo_check()

    # print local
    branches = []

    if remote_branches:

        # Remote refs.
        try:
            for b in remote.refs:
                name = '/'.join(b.name.split('/')[1:])

                if name not in settings.forbidden_branches:
                    branches.append(Branch(name, is_published=True))
        except (IndexError, AssertionError):
            pass

    if local:

        # Local refs.
        for b in [h.name for h in repo.heads]:

            if b not in [br.name for br in branches] or not remote_branches:
                if b not in settings.forbidden_branches:
                    branches.append(Branch(b, is_published=False))


    return sorted(branches, key=attrgetter('name'))
Returns a list of local and remote branches.
dataset/ETHPy150Open kennethreitz/legit/legit/scm.py/get_branches