【问题标题】:How to make a git merge by pygit2如何通过 pygit2 进行 git 合并
【发布时间】:2014-03-06 20:09:44
【问题描述】:

我尝试将分支合并到 master:

repo = pygit2.Repository("/path/to/repo/")
branch = repo.lookup_branch("upstream/branch", pygit2.GIT_BRANCH_REMOTE)
oid = branch.target
merge_result = repo.merge(oid)

并且merge_result 包含ff oid(如documentaion)并且repo 没有改变。

接下来我应该怎么做才能更改存储库?

【问题讨论】:

    标签: python git libgit2 pygit2


    【解决方案1】:

    merge 函数执行合并(或者在这种情况下告诉您可以跳过它),但是否要将当前分支移动到新位置取决于您(或该工具的用户)。

    这样做与您想要更改引用的任何其他时间相同。在这种情况下,您想要访问当前分支,您可以通过将 HEAD 解析为非符号引用并设置其目标来实现。

    repo.lookup_reference('HEAD').resolve().target = merge_result.fastforward_oid
    

    【讨论】:

    • merge_result aka repo.merge(oid) 为我返回一个 NoneType,这意味着我无法拉动 result.fastforward_oid。合并为什么会为您返回一些东西? I can't see it in the docs
    • 根据this commit in the docs,看来这个答案已经过时了
    • 这个答案涵盖了当时发布的 v0.20。 v0.21 修正了一些愚蠢的问题,让 merge 方法总是执行合并并引入merge_analysis 让你看到提交之间的关系是什么。
    猜你喜欢
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 2014-11-25
    • 2016-06-10
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    相关资源
    最近更新 更多