我想固定一个软件包的版本,所以每当我运行
go get -u ./...
字符串..这个包将保持不变(但其余的正常刷新)。
klh5stk11#
使用go modules。它是专门设计来处理精确的版本控制。在你的软件包的go.mod中,你可以将任何依赖项固定到一个固定的版本,例如。
go.mod
module example.com/hellogo 1.12require ( golang.org/x/text v0.3.0 // indirect rsc.io/quote v1.5.2 rsc.io/quote/v3 v3.0.0 rsc.io/sampler v1.3.1 // indirect)
module example.com/hello
go 1.12
require (
golang.org/x/text v0.3.0 // indirect
rsc.io/quote v1.5.2
rsc.io/quote/v3 v3.0.0
rsc.io/sampler v1.3.1 // indirect
)
字符串您可以更新单个软件包版本,例如:
go get rsc.io/quote/v3@master
型将拉取最新的提交版本(甚至超过任何semver标记的版本)。您也可以手动编辑go.mod以获得额外的精度。P.S.你需要go 1.11或更高版本的go模块。go 1.13默认打开模块。早期版本你必须通过env var GO111MODULE=ON显式启用它。
GO111MODULE=ON
ix0qys7i2#
如果你想为一个特定的Go包固定特定的版本,那么可以通过replace指令来完成。例如,下面的go.mod配置将golang.org/x/exp固定到v0.0.0-20230713183714-613f0c0eb8a1,所以go get -u -d ./...不会将这个包更新到新版本:
replace
golang.org/x/exp
v0.0.0-20230713183714-613f0c0eb8a1
go get -u -d ./...
module github.com/myname/mymodulereplace golang.org/x/exp => golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1require ( ... // This version is updated with go get -u -d ./..., but it is always // overridden by the version specified in the replace directive above golang.org/x/exp v0.0.0-20231006140011-7918f672742d ...)
module github.com/myname/mymodule
replace golang.org/x/exp => golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1
...
// This version is updated with go get -u -d ./..., but it is always
// overridden by the version specified in the replace directive above
golang.org/x/exp v0.0.0-20231006140011-7918f672742d
字符串
2条答案
按热度按时间klh5stk11#
使用go modules。它是专门设计来处理精确的版本控制。
在你的软件包的
go.mod
中,你可以将任何依赖项固定到一个固定的版本,例如。字符串
您可以更新单个软件包版本,例如:
型
将拉取最新的提交版本(甚至超过任何semver标记的版本)。您也可以手动编辑
go.mod
以获得额外的精度。P.S.你需要go 1.11或更高版本的go模块。go 1.13默认打开模块。早期版本你必须通过env var
GO111MODULE=ON
显式启用它。ix0qys7i2#
如果你想为一个特定的Go包固定特定的版本,那么可以通过
replace
指令来完成。例如,下面的go.mod
配置将golang.org/x/exp
固定到v0.0.0-20230713183714-613f0c0eb8a1
,所以go get -u -d ./...
不会将这个包更新到新版本:字符串