gpt4 book ai didi

python - 使用 PyGit2 复制“git checkout

转载 作者:太空狗 更新时间:2023-10-29 13:42:38 25 4
gpt4 key购买 nike

我正在尝试复制命令“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 冲突阻止 checkout

有没有一种方法可以在不使用 Repository.reset(ref, pygit2.GIT_RESET_HARD) 的情况下复制此行为?

最佳答案

低级检查是 git read-tree -um HEAD $target && git update-ref HEAD $target; pygit2 显然只理解一棵树读取而没有任何选项,因此,尽管它正在执行 checkout 和 merge 以及任何数量的其他操作,但它所提供的只是实际 git 的粗略模型。看起来你可以通过向你的提交添加一个引用来搞砸它,检查它,然后重置 HEAD 并删除引用。

关于python - 使用 PyGit2 复制“git checkout <commit>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43886483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com