如何将分叉回购的特定分支导入 Go 代码
How to import a specific branch of forked repo into Go code
我遇到了以下问题:
- 我fork了一个repo,在新分支下做了一些修改
- 我创建了 PR 到上游 repo,它还没有合并
- 我想调整我的 Go 代码库以导入我的分叉仓库的特定分支
问题:
- 如果原始回购是
github.com/user/pkg/v3
那么分叉回购显示为 github.com/myusername/pkg
- 此外,我创建了一个新分支,例如
mybranch
我修复的地方
- 在我使用原始回购的代码中,我的
go.mod
文件中有一个条目 github.com/user/pkg/v3
,我想用我的分叉回购 的特定分支替换它
如何正确解决这个问题?
当我尝试将我的分叉回购的 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
因此,为了在新分支中使用分叉回购,我们必须在分叉回购中标记此分支,并使用上游回购中标记的更高版本。
我遇到了以下问题:
- 我fork了一个repo,在新分支下做了一些修改
- 我创建了 PR 到上游 repo,它还没有合并
- 我想调整我的 Go 代码库以导入我的分叉仓库的特定分支
问题:
- 如果原始回购是
github.com/user/pkg/v3
那么分叉回购显示为github.com/myusername/pkg
- 此外,我创建了一个新分支,例如
mybranch
我修复的地方 - 在我使用原始回购的代码中,我的
go.mod
文件中有一个条目github.com/user/pkg/v3
,我想用我的分叉回购 的特定分支替换它
如何正确解决这个问题?
当我尝试将我的分叉回购的 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
因此,为了在新分支中使用分叉回购,我们必须在分叉回购中标记此分支,并使用上游回购中标记的更高版本。