【问题标题】:Doing git fetch && git merge from remote with git2go使用 git2go 从远程执行 git fetch && git merge
【发布时间】:2015-04-14 14:23:19
【问题描述】:

我正在使用 libgit2/git2go v0.22 并尝试从远程存储库实现类似于“git pull”的东西。在这种情况下,工作目录不写入任何内容:不更改、不提交、不推送。它只会从远程提取数据。

使用 git2go 我可以克隆远程存储库、加载/查找远程源、获取远程、列出远程标头等。似乎唯一不起作用的步骤是合并。 我的代码如下所示(我省略了错误处理):

repo, err:= git.OpenRepository(sitesConfig.Sites[SiteName].Path)
remote, err:= repo.LookupRemote("origin")
err = remote.SetCallbacks(&rcbs)
err = remote.Connect(git.ConnectDirectionFetch)
err = remote.ConnectFetch()

remote_master, err := repo.LookupReference("refs/remotes/origin/master")
mergeRemoteHead, err := repo.AnnotatedCommitFromRef(remote_master)
mergeHeads := make([]*git.AnnotatedCommit, 1)
mergeHeads[0] = mergeRemoteHead
err = repo.Merge(mergeHeads, nil, nil)
repo.StateCleanup()

运行此代码时未出现错误,但工作目录未更新。在同一目录上使用“git pull”和“git fetch && git marge origin/master”效果很好。

有什么遗漏吗?最终提交?

【问题讨论】:

    标签: go libgit2


    【解决方案1】:

    您要求连接到遥控器两次(err = remote.Connect(git.ConnectDirectionFetch)err = remote.ConnectFetch()),但您没有要求任何东西。不要尝试连接两次,而是使用一体式 fetch 方法

    remote.Fetch(nil, nil, nil)
    

    连接、下载和更新远程跟踪分支。然后你可以检查是否有更新和合并或做任何你需要的。

    【讨论】:

    • 谢谢。我可以更新工作主管,但不能更新索引。我认为我在正确的轨道上。
    猜你喜欢
    • 2011-02-05
    • 2019-04-11
    • 2018-03-05
    • 2020-07-27
    • 2017-08-13
    • 2016-11-10
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多