go work sync cmp a/go.mod a/want_go.mod cmp b/go.mod b/want_go.mod -- go.work -- go 1.18 use ( ./a ./b ) -- a/go.mod -- go 1.18 module example.com/a require ( example.com/p v1.0.0 example.com/q v1.1.0 example.com/r v1.0.0 ) replace ( example.com/p => ../p example.com/q => ../q example.com/r => ../r ) -- a/want_go.mod -- go 1.18 module example.com/a require ( example.com/p v1.1.0 example.com/q v1.1.0 ) replace ( example.com/p => ../p example.com/q => ../q example.com/r => ../r ) -- a/a.go -- package a import ( "example.com/p" "example.com/q" ) func Foo() { p.P() q.Q() } -- b/go.mod -- go 1.18 module example.com/b require ( example.com/p v1.1.0 example.com/q v1.0.0 ) replace ( example.com/p => ../p example.com/q => ../q ) -- b/want_go.mod -- go 1.18 module example.com/b require ( example.com/p v1.1.0 example.com/q v1.1.0 ) replace ( example.com/p => ../p example.com/q => ../q ) -- b/b.go -- package b import ( "example.com/p" "example.com/q" ) func Foo() { p.P() q.Q() } -- p/go.mod -- go 1.18 module example.com/p -- p/p.go -- package p func P() {} -- q/go.mod -- go 1.18 module example.com/q -- q/q.go -- package q func Q() {} -- r/go.mod -- go 1.18 module example.com/r -- r/q.go -- package r func R() {}