登录
首页 >  Golang >  Go问答

使用 git2go 从远程执行 git fetch && git merge

来源:Golang技术栈

时间:2023-03-04 09:09:53 441浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《使用 git2go 从远程执行 git fetch && git merge》带大家来了解一下使用 git2go 从远程执行 git fetch && git merge,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

我正在使用 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”效果很好。

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

正确答案

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

remote.Fetch(nil, nil, nil)

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

以上就是《使用 git2go 从远程执行 git fetch && git merge》的详细内容,更多关于golang的资料请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表