为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
潇潇雨雨 2021-09-27 21:04:16
我正在使用 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] = mergeRemoteHeaderr = repo.Merge(mergeHeads, nil, nil)repo.StateCleanup()运行此代码时没有出现错误,但工作目录没有更新。在同一目录上使用“git pull”和“git fetch && git marge origin/master”工作正常。是不是缺少了什么?最后一次提交?
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

您要求连接到遥控器两次(err = remote.Connect(git.ConnectDirectionFetch)err = remote.ConnectFetch()),但您并没有要求它做任何事情。与其尝试连接两次,不如使用多合一的 fetch 方法

remote.Fetch(nil, nil, nil)

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


查看完整回答
反对 回复 2021-09-27
  • 1 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信