繁体   English   中英

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

[英]How to get another branch instead of default branch with go get

我有2个存储库。 让他们说repo_a和repo_b。 我在repo_b中导入了repo_a

当我跑去get时,它将获得repo_a master分支。 有没有办法使用go get或repo_b中的其他命令来获取开发分支?

我不想git pull每个特定的包(在这种情况下repo_a)

稳定的HEAD理念

纯粹的go get是不可能的。

Go采用任何包管理器最简单实用的方法。 没有多个版本的Go包这样的东西。

但这并不像第一种观点那样糟糕,因为这种行为背后存在一种哲学。

作为包装作者,您必须遵守稳定的HEAD理念。 您的默认分支必须始终是包的稳定版本。 您必须在功能分支中工作,并且只有在准备发布时才合并。

这种方法go get限制的限制,应该像Python缩进一样对待 - 这是一种由语言设计强迫的哲学。

发展方式

如果您想要分叉或尝试新功能,您可以克隆repo然后切换到所需的分支并进行go build 这种方式不应该去生产。

git clone <repo name>
cd <repo name>
git checkout <branch name>
go build

您也可以使用第三方软件包管理工具。 但是大多数都支持标签和修订,而不支持分支(因为暗示您不需要安装功能分支)。

gpm

您可以使用格式指定包,其中version可以是修订号(git / bazaar / mercurial / svn修订版哈希)或标记。

你可以使用gopkg.in ,它将重定向到github。

支持两种URL模式:

gopkg.in/pkg.v3      → github.com/go-pkg/pkg (branch/tag v3, v3.N, or v3.N.M)
gopkg.in/user/pkg.v3 → github.com/user/pkg   (branch/tag v3, v3.N, or v3.N.M)

go get gopkg.in/pkg.v3表示go get github.com/go-pkg/pkg ,但是分支或标记为v3.*

有关详细信息,请参阅此处

从Go 1.11开始,这可以在使用Go模块时实现 在为Go模块安装依赖项时,您可以指定可能包含分支或标记名称的模块查询

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM