Wanting to update all dependencies in a way that it doesn’t break is somewhat more complicated than expected.
I used to only do go get -u all
which unfortunately broke, or forgot some dependencies, under certain conditions. After some GitHub issue spelunking, I’ve ended up with the following that works reliably:
$ go get -u -t ./...
Specifically the -t
flag ensures that test dependencies are updated too.
To ensure that my go.mod
and go.sum
files contain all necessary checksums and removes the ones I don’t need anymore, I always run the following right after:
$ go mod tidy
Relevant docs: