我有 2 个存储库。假设它们是 repo_a 和 repo_b。我在 repo_b 中导入了 repo_a
当我运行 go get 时,它会得到 repo_a master 分支。有什么方法可以使用 go get 或来自 repo_b 的其他命令来获取开发分支?
我不想对每个特定的包进行 git pull(在本例中为 repo_a)
原文由 MouseWanted 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有 2 个存储库。假设它们是 repo_a 和 repo_b。我在 repo_b 中导入了 repo_a
当我运行 go get 时,它会得到 repo_a master 分支。有什么方法可以使用 go get 或来自 repo_b 的其他命令来获取开发分支?
我不想对每个特定的包进行 git pull(在本例中为 repo_a)
原文由 MouseWanted 发布,翻译遵循 CC BY-SA 4.0 许可协议
纯 go get
是不可能的。
Go 采用任何包管理器中最简约和实用的方法。没有多个版本的 Go 包。
但这并不像乍看起来那么糟糕,因为这种行为背后存在一种哲学。
作为一个包的作者,你必须坚持稳定的 HEAD 理念。您的默认分支必须始终是您的软件包的稳定发布版本。您必须在功能分支中工作,并且仅在准备好发布时才合并。
这种方法受到 go get
限制的强制,它应该像 Python 缩进一样对待 - 它是一种由语言设计强制的哲学。
如果您想分叉某些东西或尝试新功能,您可以克隆回购然后切换到所需的分支并执行 go build
。这种方式不应该投入生产。
git clone <repo name>
cd <repo name>
git checkout <branch name>
go build
您也可以使用第三方包管理工具。但是它们中的大多数都支持标签和修订,而不是分支(因为它暗示您不需要安装功能分支)。
加仑压力:
您可以使用格式指定包,其中版本可以是修订号(git/bazaar/mercurial/svn 修订散列)或标签。
原文由 I159 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.4k 阅读
6 回答7k 阅读✓ 已解决
5 回答2.9k 阅读
3 回答2.7k 阅读
4 回答2.4k 阅读
1 回答3.4k 阅读
2 回答967 阅读✓ 已解决
从 Go 1.11 开始,这在使用 Go modules 时是可能的。为 Go 模块安装依赖项时,您可以指定一个 模块查询,其中可能包含分支或标签名称: