如何使用 go get 获取另一个分支而不是默认分支

新手上路,请多包涵

我有 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 许可协议

阅读 3k
2 个回答

从 Go 1.11 开始,这在使用 Go modules 时是可能的。为 Go 模块安装依赖项时,您可以指定一个 模块查询,其中可能包含分支或标签名称:

 $ go get <path-to-repo>@<branch>

原文由 helmbert 发布,翻译遵循 CC BY-SA 4.0 许可协议

稳定的HEAD理念

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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题