如何忽略 go.mod 中的替换指令

How to ignore replace directive in go.mod

我在进行本地开发时使用“替换”语句。所以我的 go.mod 看起来像这样:

require (
 gorm.io/gorm v1.21.11
 github.com/mypackages/session v1.1.0
)

replace (
 github.com/mypackages/session => ./../session
)

但是当我 git commit 我的更改并将代码部署到生产环境时,我不需要“替换”,所以我需要在每个 git commit 上注释这行替换代码然后取消注释.有没有办法在生产环境中忽略“replace”语句?

replace 环境 中不能被忽略,因为它是在依赖解析时使用的,它在构建之前就已经存在了,这比它被执行早了很长时间在生产中。但要回答根本问题,不,您不能“忽略”该指令。如果它在那里,它就在那里。

虽然@Adrian 是正确的,因为在 Go 中无法实现这一点,但我认为这个问题与 Go 无关,而更多地与 Git 有关。您可以使用内容过滤器忽略文件的特定部分。有关详细信息,请参阅 this SO answer

拥有 mod 文件的本地版本(例如 go.local.mod),然后您可以告诉 go 命令使用它:

go build -modfile=go.local.mod main.go