我正在尝试复制命令“git checkout (commit)”的行为,其中 (commit) 是对特定提交的引用,而不是分支名称。
使用此命令时,存储库的“HEAD”指向提交(分离头),并且工作目录处于与此提交中相同的状态。
目前,我设法使存储库的 HEAD 指向 PyGit2 的提交:
def go(self, repo_name, version):
repo = pygit2.Repository(bdd[repo_name])
#commit = repo.revparse_single(version)
#repo.reset(version, pygit2.GIT_RESET_HARD)
repo.set_head(pygit2.Oid(hex=version))
print repo.head_is_detached
我的问题是我找不到如何像 Git CLI 那样回滚工作目录。我尝试使用:
repo.checkout_head()
: 它对工作目录没有任何作用。repo.checkout()
: 崩溃GitError: X conflicts prevent checkout
有没有办法在不使用的情况下复制这种行为Repository.reset(ref, pygit2.GIT_RESET_HARD)
?