15

好吧,标题是不言自明的。与使用GitPython模块运行git reset --hard(在终端上)等效的 python 代码是什么?

4

3 回答 3

23

您可以使用:

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

或者,如果您需要重置到特定分支:

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

或者在我的情况下,如果您只想将 repo 硬更新为 origin/master(警告,这将破坏您当前的更改):

# 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()
于 2014-06-14T19:20:51.847 回答
6

reset我在文档中搜索并找到了这个

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

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

将我们的 HEAD 重置为给定的提交,可选择同步索引和工作树。我们引用的引用也将设置为提交。

于 2012-08-08T12:46:23.417 回答
5

您可以使用:

repo = git.Repo('repo')
# ...
# Remove last commit
repo.head.reset('HEAD~1', index=True, working_tree=True)
于 2016-11-24T07:05:07.943 回答