如何将分叉回购的特定分支导入 Go 代码

How to import a specific branch of forked repo into Go code

我遇到了以下问题:

问题:

如何正确解决这个问题?

当我尝试将我的分叉回购的 go.mod 更改为 github.com/myusername/pkg/v3 然后调用 go get github.com/myusername/pkg@mybranch 时,我看到的是以下内容

go: github.com/myusername/pkg/v3@vxx-xx-xx: parsing go.mod:
    module declares its path as: github.com/user/pkg/v3
            but was required as: github.com/myusername/pkg/v3

我找到了所需的解决方案。诀窍是执行以下一系列步骤:

  • fork 原始 repo
  • 创建新分支
  • 对代码进行修改
  • 将分支推送到分叉的 repo
  • 用高于原始仓库的版本标记此分支,例如如果原始回购有 v3.1.1 那么我应用到我的分叉分支的标签是 v3.1.2
  • 转到依赖于此包的代码
  • 更改我的包的 go.mod 文件以使用 replace 指令和我的新标签,如下所示
replace github.com/user/pkg/v3 => github.com/myusername/pkg/v3 v3.1.2

因此,为了在新分支中使用分叉回购,我们必须在分叉回购中标记此分支,并使用上游回购中标记的更高版本。