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

Anuvrat Parashar picture Anuvrat Parashar · Aug 8, 2012 · Viewed 8.2k times · Source

Well the title is self explanatory. What will be the python code equivalent to running git reset --hard (on terminal) using GitPython module?

Answer

blented picture blented · Jun 14, 2014

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 changes
repo.git.reset('--hard')
# ensure master is checked out
repo.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 remote
repo.remotes.origin.pull()