我对golang非常陌生。
我正在尝试从go程序中进行git pull。我已经查看了本地库,发现https://github.com/src-d/go-git/。
它有克隆等功能,但没有拉取的功能。查看源代码似乎也有拉取的函数。
func (r *Repository) Pull(o *PullOptions)
然而编译器警告说它是未定义的。有人能指点我如何做到这一点,或者提供一个支持克隆和拉取的替代库吗?
我对golang非常陌生。
我正在尝试从go程序中进行git pull。我已经查看了本地库,发现https://github.com/src-d/go-git/。
它有克隆等功能,但没有拉取的功能。查看源代码似乎也有拉取的函数。
func (r *Repository) Pull(o *PullOptions)
然而编译器警告说它是未定义的。有人能指点我如何做到这一点,或者提供一个支持克隆和拉取的替代库吗?
你应该通过克隆仓库来创建一个存储库结构体:
import {
git "gopkg.in/src-d/go-git.v4"
}
repo, err := git.Clone(memory.NewStorage(), nil, &git.CloneOptions{
URL: "https://github.com/src-d/go-siva",
})
然后在仓库结构上调用Pull方法。
err := repo.Pull(&git.PullOptions{
RemoteName: "origin"
})
您不能直接调用git.Pull
。
gopkg.in/src-d/go-git.v4
不再维护,建议使用 github.com/go-git/go-git
。参考文档 - https://pkg.go.dev/github.com/go-git/go-git
示例代码
import "github.com/go-git/go-git/v5"
_, err := git.PlainClone("/tmp/foo", false, &git.CloneOptions{
URL: "https://github.com/go-git/go-git",
Progress: os.Stdout,
})