How to do a git reset --hard using gitPython? How to do a git reset --hard using gitPython? git git

How to do a git reset --hard using gitPython?


You can use:

repo = git.Repo('c:/SomeRepo')repo.git.reset('--hard')

Or if you need to reset to a specific branch:

repo.git.reset('--hard','origin/master')

Or in my case, if you want to just hard update a repo to origin/master (warning, this will nuke your current changes):

# blast any current changesrepo.git.reset('--hard')# ensure master is checked outrepo.heads.master.checkout()# blast any changes there (only if it wasn't checked out)repo.git.reset('--hard')# remove any extra non-tracked files (.pyc, etc)repo.git.clean('-xdf')# pull in the changes from from the remoterepo.remotes.origin.pull()


I searched for reset in the documentation and found this:

class git.refs.head.HEAD(repo, path='HEAD')

reset(commit='HEAD', index=True, working_tree=False, paths=None, **kwargs)

Reset our HEAD to the given commit optionally synchronizing the index and working tree. The reference we refer to will be set to commit as well.


You can use:

repo = git.Repo('repo')# ...# Remove last commitrepo.head.reset('HEAD~1', index=True, working_tree=True)