如何将 go 模块指向尚未推送到 Git 的本地模块

How to point go module to a local module which is not yet pushed to Git

我有什么:

  1. 私有存储库
  2. 存储库中的子模块
submodule/
 submodule.go
 go.mod
 go.sum
main.go
go.mod
go.sum

go.mod 包含

module github.com/username/privaterepo

go 1.16

require github.com/username/privaterepo/submodule latest

replace (
    github.com/username/privaterepo/submodule latest => target ./submodule
)

submodule/go.mod 包含

module github.com/username/privaterepo/submodule

go 1.16

我还没有将任何内容推送到存储库。我正在尝试 go mod tidy 在我的应用程序的根目录中:

$ env GIT_TERMINAL_PROMPT=1 go mod tidy
Username for 'https://github.com': username
Password for 'https://username@github.com': 
go: errors parsing go.mod:
<...>/go.mod:5: no matching versions for query "latest"
<...>/go.mod:8:2: no matching versions for query "latest"

我应该为尚未推送到存储库的本地子模块使用哪个版本?当它没有被推送到存储库时,是否甚至可以使用这样的本地子模块(我认为 go mod 在看到 replace 时甚至不会去远程源)?

我用

修正了go.mod
module github.com/username/privaterepo

go 1.16

require github.com/username/privaterepo/submodule v0.0.0 //version changed to v0.0.0-00010101000000-000000000000 after go mod tidy

replace github.com/username/privaterepo/submodule => ./submodule