# -u=patch will patch dependencies as far as possible, but not so far that they # conflict with other command-line arguments. go list -m all stdout '^example.net/a v0.1.0 ' stdout '^example.net/b v0.1.0 ' go get -u=patch example.net/a@v0.2.0 go list -m all stdout '^example.net/a v0.2.0 ' stdout '^example.net/b v0.1.1 ' # not v0.1.2, which requires …/a v0.3.0. -- go.mod -- module example go 1.16 require ( example.net/a v0.1.0 example.net/b v0.1.0 // indirect ) replace ( example.net/a v0.1.0 => ./a example.net/a v0.2.0 => ./a example.net/a v0.3.0 => ./a example.net/b v0.1.0 => ./b10 example.net/b v0.1.1 => ./b11 example.net/b v0.1.2 => ./b12 ) -- example.go -- package example import _ "example.net/a" -- a/go.mod -- module example.net/a go 1.16 require example.net/b v0.1.0 -- a/a.go -- package a import _ "example.net/b" -- b10/go.mod -- module example.net/b go 1.16 require example.net/a v0.1.0 -- b10/b.go -- package b -- b10/b_test.go -- package b_test import _ "example.net/a" -- b11/go.mod -- module example.net/b go 1.16 require example.net/a v0.2.0 -- b11/b.go -- package b -- b11/b_test.go -- package b_test import _ "example.net/a" -- b12/go.mod -- module example.net/b go 1.16 require example.net/a v0.3.0 -- b12/b.go -- package b -- b12/b_test.go -- package b_test import _ "example.net/a"