diff --git a/lib/manager/gomod/artifacts.ts b/lib/manager/gomod/artifacts.ts
index 9d49dad9c681a787310b8f0e50e5e5e5a6ebde18..f142d182027f13b921642ced9281f82361c0c292 100644
--- a/lib/manager/gomod/artifacts.ts
+++ b/lib/manager/gomod/artifacts.ts
@@ -38,7 +38,7 @@ export async function updateArtifacts(
     }
     await outputFile(localGoModFileName, massagedGoMod);
     const localGoSumFileName = join(config.localDir, sumFileName);
-    const customEnv = ['GOPATH', 'GOPROXY'];
+    const customEnv = ['GOPATH', 'GOPROXY', 'GONOSUMDB'];
     const env = getChildProcessEnv(customEnv);
     const startTime = process.hrtime();
     let cmd: string;
diff --git a/lib/manager/gomod/update.ts b/lib/manager/gomod/update.ts
index b08055df406ffb705c09c39ff97a9bfeb8376ccd..14825d83e303d3b7db2f0ad3eef66850fef6134c 100644
--- a/lib/manager/gomod/update.ts
+++ b/lib/manager/gomod/update.ts
@@ -77,6 +77,8 @@ export function updateDependency(
         upgrade.newMajor > 1 &&
         !newLine.includes(`/v${upgrade.newMajor}`)
       ) {
+        // If package has no version, pin to latest one.
+        newLine = newLine.replace(depName, depName + '/v' + upgrade.newMajor);
         if (upgrade.currentValue.match(/^v(0|1)\./)) {
           // Add version
           newLine = newLine.replace(
@@ -94,7 +96,12 @@ export function updateDependency(
       }
     }
     if (lineToChange.endsWith('+incompatible')) {
-      newLine += '+incompatible';
+      let toAdd = '+incompatible';
+
+      if (upgrade.updateType === 'major' && upgrade.newMajor >= 2) {
+        toAdd = '';
+      }
+      newLine += toAdd;
     }
     if (newLine === lineToChange) {
       logger.debug('No changes necessary');
diff --git a/test/manager/gomod/__snapshots__/extract.spec.ts.snap b/test/manager/gomod/__snapshots__/extract.spec.ts.snap
index 7ba5ee243c2cbb0cf6e687d6a18c7641eac8ee9e..182598d01d7f3b7b85e1035dcc2a0d7d5d6b33d4 100644
--- a/test/manager/gomod/__snapshots__/extract.spec.ts.snap
+++ b/test/manager/gomod/__snapshots__/extract.spec.ts.snap
@@ -766,5 +766,15 @@ Array [
       "lineNumber": 11,
     },
   },
+  Object {
+    "currentValue": "v3.5.0+incompatible",
+    "datasource": "go",
+    "depName": "github.com/caarlos0/env",
+    "depNameShort": "caarlos0/env",
+    "depType": "require",
+    "managerData": Object {
+      "lineNumber": 13,
+    },
+  },
 ]
 `;
diff --git a/test/manager/gomod/__snapshots__/update.spec.ts.snap b/test/manager/gomod/__snapshots__/update.spec.ts.snap
index d4b790db6ce36cdce485911ddd71ff563c7dfb22..7b3e74c2065b6d7e44411ac03b532091821b2711 100644
--- a/test/manager/gomod/__snapshots__/update.spec.ts.snap
+++ b/test/manager/gomod/__snapshots__/update.spec.ts.snap
@@ -14,6 +14,7 @@ require github.com/Azure/azure-sdk-for-go v25.1.0+incompatible
 replace github.com/pkg/errors => ../errors
 replace golang.org/x/foo => github.com/pravesht/gocql v0.0.0
 
+require github.com/caarlos0/env v3.5.0+incompatible
 "
 `;
 
@@ -98,5 +99,6 @@ require github.com/Azure/azure-sdk-for-go v25.1.0+incompatible
 replace github.com/pkg/errors => ../errors
 replace golang.org/x/foo => github.com/pravesht/gocql v0.0.0
 
+require github.com/caarlos0/env v3.5.0+incompatible
 "
 `;
diff --git a/test/manager/gomod/_fixtures/1/go.mod b/test/manager/gomod/_fixtures/1/go.mod
index 914afa7d5f062a627637fcd73bb7d1375ae78f9c..e0f36e378d31420fb3ee991e8700502e8271c847 100644
--- a/test/manager/gomod/_fixtures/1/go.mod
+++ b/test/manager/gomod/_fixtures/1/go.mod
@@ -11,3 +11,4 @@ require github.com/Azure/azure-sdk-for-go v25.1.0+incompatible
 replace github.com/pkg/errors => ../errors
 replace golang.org/x/foo => github.com/pravesht/gocql v0.0.0
 
+require github.com/caarlos0/env v3.5.0+incompatible
diff --git a/test/manager/gomod/extract.spec.ts b/test/manager/gomod/extract.spec.ts
index 99a8e0081e7d68af456925a2fc59ef0d8e555d34..405070a926d66c3e71e12f924918032ac3f5a362 100644
--- a/test/manager/gomod/extract.spec.ts
+++ b/test/manager/gomod/extract.spec.ts
@@ -12,7 +12,7 @@ describe('lib/manager/gomod/extract', () => {
     it('extracts single-line requires', () => {
       const res = extractPackageFile(gomod1).deps;
       expect(res).toMatchSnapshot();
-      expect(res).toHaveLength(7);
+      expect(res).toHaveLength(8);
       expect(res.filter(e => e.skipReason)).toHaveLength(1);
       expect(res.filter(e => e.depType === 'replace')).toHaveLength(1);
     });
diff --git a/test/manager/gomod/update.spec.ts b/test/manager/gomod/update.spec.ts
index 261c0d585e1c590b2c905e0c423e40a64e4441a0..4b3de3ee3b98b5320e1e182c46f3fd147798535f 100644
--- a/test/manager/gomod/update.spec.ts
+++ b/test/manager/gomod/update.spec.ts
@@ -235,5 +235,20 @@ describe('manager/gomod/update', () => {
       expect(res).not.toEqual(gomod1);
       expect(res.includes(upgrade.newDigest.substring(0, 12))).toBe(true);
     });
+    it('handles no pinned version to latest available version', () => {
+      const upgrade = {
+        depName: 'github.com/caarlos0/env',
+        managerData: { lineNumber: 13 },
+        newValue: 'v6.1.0',
+        depType: 'require',
+        currentValue: 'v3.5.0+incompatible',
+        newMajor: 6,
+        updateType: 'major',
+      };
+      const res = updateDependency(gomod1, upgrade);
+      expect(res).not.toEqual(gomod1);
+      expect(res.includes(upgrade.newValue)).toBe(true);
+      expect(res).toContain(upgrade.depName + '/v6');
+    });
   });
 });