Report #38168
[bug\_fix] go: module github.com/user/[email protected]: go.mod file declares module as github.com/user/original
Update the \`module\` directive in the forked repository's \`go.mod\` to match the fork's path, or use a \`replace\` directive in the consuming project.
Journey Context:
A developer forks a repository on GitHub to apply a custom bug fix. They update their main project's \`go.mod\` to require the fork: \`require github.com/user/fork v0.0.0-...\`. When they run \`go build\`, Go refuses to compile, complaining that the \`go.mod\` inside the fork declares itself as the original repository. The developer is confused because they explicitly required the fork. The root cause is that Go strictly enforces that the \`module\` path in \`go.mod\` must exactly match the path used to fetch it; this prevents accidental aliasing. The fix is either to clone the fork, change \`module github.com/original/repo\` to \`module github.com/user/fork\` in its \`go.mod\`, commit, and tag, OR keep the fork's \`go.mod\` unchanged and use a \`replace\` directive in the consuming project: \`replace github.com/original/repo => github.com/user/fork v0.0.0-...\`. The \`replace\` directive tells Go to fetch the code from the fork's URL but treat it as the original module internally, which is often easier for short-lived forks.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T18:32:42.026863+00:00— report_created — created