diff --git a/lib/manager/npm/extract/index.js b/lib/manager/npm/extract/index.js
index 9922890cc575b152af1347c5cf155cbdbd732170..639fdabc31a3bd26ebce2cca10cea395b35e0c17 100644
--- a/lib/manager/npm/extract/index.js
+++ b/lib/manager/npm/extract/index.js
@@ -153,12 +153,11 @@ async function extractDependencies(content, fileName, config) {
       return dep;
     }
     const [depNamePart, depRefPart] = hashSplit;
-    const depNamePartSplit = depNamePart.split(':');
-    if (depNamePartSplit.length === 2 && depNamePartSplit[0] !== 'github') {
-      dep.skipReason = 'unknown-version';
-      return dep;
-    }
-    const githubOwnerRepo = depNamePart.replace('github:', '');
+    const githubOwnerRepo = depNamePart
+      .replace(/^github:/, '')
+      .replace(/^git\+/, '')
+      .replace(/^https:\/\/github\.com\//, '')
+      .replace(/\.git$/, '');
     const githubRepoSplit = githubOwnerRepo.split('/');
     if (githubRepoSplit.length !== 2) {
       dep.skipReason = 'unknown-version';
diff --git a/test/manager/npm/__snapshots__/update.spec.js.snap b/test/manager/npm/__snapshots__/update.spec.js.snap
index f7cdd98658501acfdae73ff9d5ff3259b6e4adc1..62a8a6473e6a884eaab5dadd552cb561f955c62a 100644
--- a/test/manager/npm/__snapshots__/update.spec.js.snap
+++ b/test/manager/npm/__snapshots__/update.spec.js.snap
@@ -5,3 +5,5 @@ exports[`workers/branch/package-json .bumpPackageVersion() increments 1`] = `"{\
 exports[`workers/branch/package-json .bumpPackageVersion() updates 1`] = `"{\\"name\\":\\"some-package\\",\\"version\\":\\"0.1.0\\"}"`;
 
 exports[`workers/branch/package-json .updateDependency(fileContent, depType, depName, newValue) replaces a github dependency value 1`] = `"{\\"dependencies\\":{\\"gulp\\":\\"gulpjs/gulp#v4.0.0\\"}}"`;
+
+exports[`workers/branch/package-json .updateDependency(fileContent, depType, depName, newValue) replaces a github fully specified version 1`] = `"{\\"dependencies\\":{\\"n\\":\\"git+https://github.com/owner/n#v1.1.0\\"}}"`;
diff --git a/test/manager/npm/extract/__snapshots__/index.spec.js.snap b/test/manager/npm/extract/__snapshots__/index.spec.js.snap
index 9d96c34eb2449076f350e969deb8677f679344ee..f08a8bf20f861bb75ebcf4339d07b48351f9fffe 100644
--- a/test/manager/npm/extract/__snapshots__/index.spec.js.snap
+++ b/test/manager/npm/extract/__snapshots__/index.spec.js.snap
@@ -194,6 +194,40 @@ Object {
       "skipReason": "unknown-version",
       "versionScheme": "semver",
     },
+    Object {
+      "currentValue": "github:owner/k#49b5aca",
+      "depName": "k",
+      "depType": "dependencies",
+      "prettyDepType": "dependency",
+      "skipReason": "unversioned-reference",
+      "versionScheme": "semver",
+    },
+    Object {
+      "currentValue": "github:owner/l.git#abcdef0",
+      "depName": "l",
+      "depType": "dependencies",
+      "prettyDepType": "dependency",
+      "skipReason": "unversioned-reference",
+      "versionScheme": "semver",
+    },
+    Object {
+      "currentRawValue": "https://github.com/owner/m.git#v1.0.0",
+      "currentValue": "v1.0.0",
+      "depName": "m",
+      "depType": "dependencies",
+      "prettyDepType": "dependency",
+      "purl": "pkg:github/owner/m?ref=tags",
+      "versionScheme": "semver",
+    },
+    Object {
+      "currentRawValue": "git+https://github.com/owner/n#v2.0.0",
+      "currentValue": "v2.0.0",
+      "depName": "n",
+      "depType": "dependencies",
+      "prettyDepType": "dependency",
+      "purl": "pkg:github/owner/n?ref=tags",
+      "versionScheme": "semver",
+    },
   ],
   "lernaClient": undefined,
   "lernaDir": undefined,
diff --git a/test/manager/npm/extract/index.spec.js b/test/manager/npm/extract/index.spec.js
index 669959b1a5fac0fa0518e0351791ea0fc7b0c017..dc667d165c0a046450efabab74de5b33e890e764 100644
--- a/test/manager/npm/extract/index.spec.js
+++ b/test/manager/npm/extract/index.spec.js
@@ -183,6 +183,10 @@ describe('manager/npm/extract', () => {
           h: 'github:-hello/world#v1.0.0',
           i: '@foo/bar#v2.0.0',
           j: 'github:frank#v0.0.1',
+          k: 'github:owner/k#49b5aca',
+          l: 'github:owner/l.git#abcdef0',
+          m: 'https://github.com/owner/m.git#v1.0.0',
+          n: 'git+https://github.com/owner/n#v2.0.0',
         },
       };
       const pJsonStr = JSON.stringify(pJson);
diff --git a/test/manager/npm/update.spec.js b/test/manager/npm/update.spec.js
index da950ef8449e8ace02de28781d65ddd50160260e..93fc10fe2832842d3dca8790c8ef655822cf4f43 100644
--- a/test/manager/npm/update.spec.js
+++ b/test/manager/npm/update.spec.js
@@ -40,6 +40,23 @@ describe('workers/branch/package-json', () => {
       const res = npmUpdater.updateDependency(input, upgrade);
       expect(res).toMatchSnapshot();
     });
+    it('replaces a github fully specified version', () => {
+      const upgrade = {
+        depType: 'dependencies',
+        depName: 'n',
+        currentValue: 'v1.0.0',
+        currentRawValue: 'git+https://github.com/owner/n#v1.0.0',
+        newValue: 'v1.1.0',
+      };
+      const input = JSON.stringify({
+        dependencies: {
+          n: 'git+https://github.com/owner/n#v1.0.0',
+        },
+      });
+      const res = npmUpdater.updateDependency(input, upgrade);
+      expect(res).toMatchSnapshot();
+      expect(res.includes('v1.1.0')).toBe(true);
+    });
     it('updates resolutions too', () => {
       const upgrade = {
         depType: 'dependencies',