そもそもそんなことしないほうがいいというのは承知で、開発中のパッケージなどでタグをうちまちがえたので修正したところ新しいコミットがダウンロードされなかった。

手順

  • モジュールAのコミットAにtag v1.0.0をつけてpush
  • モジュールAを使っているリポジトリで go get ~~~@v1.0.0
  • モジュールAでファイル追加してコミットする(コミットB)
  • v1.0.0を消してコミットBにv1.0.0をつけなおしてpush
  • 再度 go get ~~~@v1.0.0 したが変更がないためダウンロードしてくれなかった

解消方法

  • go clean -modcache でクリアして、go.sumに書いてあるハッシュも消してから go get
  • ~/go/pkg/mod にファイルがダウンロードされて、先程追加したファイルも存在することを確認

しかしこれだけでは足りなかった。 go buildしたところ、モジュールの修正が反映されていなくて、たとえば追加したstructを使っている箇所でビルドエラーとなる。 まだキャッシュが残っているみたい。

go clean -modcache~/go/pkg/mod が消えたのでいいと思ったが、 go clean -cachego env GOCACHE にあるビルドキャッシュなども消さないといけなかった