Go 项目未从 github 中提取导入更新
Go project not pulling import updates from github
我有一个包含文件 go.mod
和 hello.go
的包 hello
和一个包含文件 go.mod
和 say_things.go
的包 say_things
.
hello.go
:
package main
import "github.com/user/say_things"
func main() {
say_things.SayBye()
}
say_things.go
:
package say_things
import "fmt"
func SayBye() {
fmt.Println("BYE")
}
这两个项目都是github项目。当我 运行 hello.go
时,它按预期打印“BYE”。我现在更新 SayBye
为:
package say_things
import "fmt"
func SayBye() {
fmt.Println("GO AWAY")
}
并将更改推送到 github。我再次 运行 hello.go
,期待它说“走开”,但它没有。它仍然显示 BYE
。我再次删除了生成的 go.sum
和 go run hello.go
,但它仍然显示 BYE
。然后我转到 go/pkg/mod/github.com/user/
并再次删除 say_bye@v0.0.0-<hash>
和 运行 hello.go
。尽管如此,一切都没有改变。接下来,我 运行 go get github.com/user/say_things
,我仍然得到 BYE
.
如何获得 hello.go
到 运行 更新后的 say_hello
代码?
一种通过进行以下更改来更新代码的方法。
在您的 hello
项目中打开您的 go.mod
文件,然后 replace
针对 github.com/user/say_things
编写的 current version
使用您的 [=16] 的最后一次提交哈希=] 项目.
换句话说,在 go.mod
文件中
替换 github.com/user/say_things <current-version>
github.com/user/say_things <last-commit-hash>
最后 运行:
$ go mod tidy
$ go mod vendor
go get 命令下载所需模块的新版本。
例如:
% go get -u all
go: github.com/user/say_things upgrade => v0.0.0-<new hash>
– 下载所有最后一个模块的版本到 $GOPATH/pkg
并升级 go.mod
文件。
❕使用 go-modules 时,更好的方法是向存储库添加版本标签(tag
必须
符合 Semantic Versioning 规格)
git commit -a - m "say_things - some changes"
git tag v1.0.1
git push
git push --tags
这将允许您在 go.mod
中手动更改版本
module github.com/user/hello
go 1.15
require github.com/user/say_things v1.0.1
% go mod download
go: finding github.com/user/say_things v1.0.1
,通过版本标签获取需要的版本
% go get github.com/user/say_things@v1.0.1
go: finding github.com/user/say_things v1.0.1
go: downloading github.com/user/say_things v1.0.1
go: extracting github.com/user/say_things v1.0.1
我有一个包含文件 go.mod
和 hello.go
的包 hello
和一个包含文件 go.mod
和 say_things.go
的包 say_things
.
hello.go
:
package main
import "github.com/user/say_things"
func main() {
say_things.SayBye()
}
say_things.go
:
package say_things
import "fmt"
func SayBye() {
fmt.Println("BYE")
}
这两个项目都是github项目。当我 运行 hello.go
时,它按预期打印“BYE”。我现在更新 SayBye
为:
package say_things
import "fmt"
func SayBye() {
fmt.Println("GO AWAY")
}
并将更改推送到 github。我再次 运行 hello.go
,期待它说“走开”,但它没有。它仍然显示 BYE
。我再次删除了生成的 go.sum
和 go run hello.go
,但它仍然显示 BYE
。然后我转到 go/pkg/mod/github.com/user/
并再次删除 say_bye@v0.0.0-<hash>
和 运行 hello.go
。尽管如此,一切都没有改变。接下来,我 运行 go get github.com/user/say_things
,我仍然得到 BYE
.
如何获得 hello.go
到 运行 更新后的 say_hello
代码?
一种通过进行以下更改来更新代码的方法。
在您的 hello
项目中打开您的 go.mod
文件,然后 replace
针对 github.com/user/say_things
编写的 current version
使用您的 [=16] 的最后一次提交哈希=] 项目.
换句话说,在 go.mod
文件中
替换 github.com/user/say_things <current-version>
github.com/user/say_things <last-commit-hash>
最后 运行:
$ go mod tidy
$ go mod vendor
go get 命令下载所需模块的新版本。 例如:
% go get -u all
go: github.com/user/say_things upgrade => v0.0.0-<new hash>
– 下载所有最后一个模块的版本到 $GOPATH/pkg
并升级 go.mod
文件。
❕使用 go-modules 时,更好的方法是向存储库添加版本标签(tag
必须
符合 Semantic Versioning 规格)
git commit -a - m "say_things - some changes"
git tag v1.0.1
git push
git push --tags
这将允许您在 go.mod
module github.com/user/hello
go 1.15
require github.com/user/say_things v1.0.1
% go mod download
go: finding github.com/user/say_things v1.0.1
,通过版本标签获取需要的版本
% go get github.com/user/say_things@v1.0.1
go: finding github.com/user/say_things v1.0.1
go: downloading github.com/user/say_things v1.0.1
go: extracting github.com/user/say_things v1.0.1