diff --git a/lib/modules/manager/jsonnet-bundler/__snapshots__/extract.spec.ts.snap b/lib/modules/manager/jsonnet-bundler/__snapshots__/extract.spec.ts.snap
index 796101185981ee5a5f57b4028edc5510b3a172a5..638ef47fdf07a754b5029d831efdad48a545852d 100644
--- a/lib/modules/manager/jsonnet-bundler/__snapshots__/extract.spec.ts.snap
+++ b/lib/modules/manager/jsonnet-bundler/__snapshots__/extract.spec.ts.snap
@@ -5,7 +5,7 @@ exports[`modules/manager/jsonnet-bundler/extract extractPackageFile() extracts d
   "deps": [
     {
       "currentValue": "v0.50.0",
-      "depName": "prometheus-operator",
+      "depName": "github.com/prometheus-operator/prometheus-operator/jsonnet/prometheus-operator",
       "managerData": {
         "subdir": "jsonnet/prometheus-operator",
       },
@@ -13,7 +13,7 @@ exports[`modules/manager/jsonnet-bundler/extract extractPackageFile() extracts d
     },
     {
       "currentValue": "v0.9.0",
-      "depName": "kube-prometheus",
+      "depName": "github.com/prometheus-operator/kube-prometheus/jsonnet/kube-prometheus",
       "managerData": {
         "subdir": "jsonnet/kube-prometheus",
       },
@@ -28,7 +28,7 @@ exports[`modules/manager/jsonnet-bundler/extract extractPackageFile() extracts d
   "deps": [
     {
       "currentValue": "v0.50.0",
-      "depName": "prometheus-operator-mixin",
+      "depName": "github.com/prometheus-operator/prometheus-operator/jsonnet/mixin",
       "managerData": {
         "subdir": "jsonnet/mixin",
       },
diff --git a/lib/modules/manager/jsonnet-bundler/artifacts.spec.ts b/lib/modules/manager/jsonnet-bundler/artifacts.spec.ts
index b0910faa2673ec631700bf0cb4f5b237692e8102..6a0a5f83f9a533812ee9c51aa41491d0a36f4793 100644
--- a/lib/modules/manager/jsonnet-bundler/artifacts.spec.ts
+++ b/lib/modules/manager/jsonnet-bundler/artifacts.spec.ts
@@ -82,11 +82,11 @@ describe('modules/manager/jsonnet-bundler/artifacts', () => {
         packageFileName: 'jsonnetfile.json',
         updatedDeps: [
           {
-            depName: 'foo',
+            depName: 'github.com/foo/foo',
             packageName: 'https://github.com/foo/foo.git',
           },
           {
-            depName: 'foo',
+            depName: 'github.com/foo/foo',
             packageName: 'ssh://git@github.com/foo/foo.git',
             managerData: {
               subdir: 'bar',
diff --git a/lib/modules/manager/jsonnet-bundler/extract.spec.ts b/lib/modules/manager/jsonnet-bundler/extract.spec.ts
index 43d69003d5530b9854456570efb35539d6295318..9e130501bc248b92dbfc2ac45e05106b208055d7 100644
--- a/lib/modules/manager/jsonnet-bundler/extract.spec.ts
+++ b/lib/modules/manager/jsonnet-bundler/extract.spec.ts
@@ -9,6 +9,15 @@ const jsonnetfileNoDependencies = Fixtures.get(
 const jsonnetfileLocalDependencies = Fixtures.get(
   'jsonnetfile-local-dependencies.json'
 );
+const jsonnetfileEmptyGitSource = JSON.stringify({
+  version: 1,
+  dependencies: [
+    {
+      source: { git: {} },
+      version: 'v0.50.0',
+    },
+  ],
+});
 
 describe('modules/manager/jsonnet-bundler/extract', () => {
   describe('extractPackageFile()', () => {
@@ -36,18 +45,29 @@ describe('modules/manager/jsonnet-bundler/extract', () => {
       ).toBeNull();
     });
 
+    it('returns null for dependencies with empty Git source', () => {
+      expect(
+        extractPackageFile(
+          jsonnetfileEmptyGitSource,
+          'jsonnetfile-empty-git-source.json'
+        )
+      ).toBeNull();
+    });
+
     it('extracts dependency', () => {
       const res = extractPackageFile(jsonnetfile, 'jsonnetfile.json');
       expect(res).toMatchSnapshot({
         deps: [
           {
-            depName: 'prometheus-operator',
+            depName:
+              'github.com/prometheus-operator/prometheus-operator/jsonnet/prometheus-operator',
             packageName:
               'https://github.com/prometheus-operator/prometheus-operator.git',
             currentValue: 'v0.50.0',
           },
           {
-            depName: 'kube-prometheus',
+            depName:
+              'github.com/prometheus-operator/kube-prometheus/jsonnet/kube-prometheus',
             packageName:
               'ssh://git@github.com/prometheus-operator/kube-prometheus.git',
             currentValue: 'v0.9.0',
@@ -61,7 +81,8 @@ describe('modules/manager/jsonnet-bundler/extract', () => {
       expect(res).toMatchSnapshot({
         deps: [
           {
-            depName: 'prometheus-operator-mixin',
+            depName:
+              'github.com/prometheus-operator/prometheus-operator/jsonnet/mixin',
             packageName:
               'https://github.com/prometheus-operator/prometheus-operator',
             currentValue: 'v0.50.0',
diff --git a/lib/modules/manager/jsonnet-bundler/extract.ts b/lib/modules/manager/jsonnet-bundler/extract.ts
index 0907faff28cbc78ffb1baf8a0555d735c5dac508..167327910cb54e646b54f6423ddf8e9b8d39d34d 100644
--- a/lib/modules/manager/jsonnet-bundler/extract.ts
+++ b/lib/modules/manager/jsonnet-bundler/extract.ts
@@ -1,13 +1,10 @@
+import { join } from 'upath';
 import { logger } from '../../../logger';
 import { coerceArray } from '../../../util/array';
-import { regEx } from '../../../util/regex';
+import { parseUrl } from '../../../util/url';
 import type { PackageDependency, PackageFile } from '../types';
 import type { Dependency, JsonnetFile } from './types';
 
-const gitUrl = regEx(
-  /(ssh:\/\/git@|https:\/\/)([\w.]+)\/([\w:/\-~]*)\/(?<depName>[\w:/-]+)(\.git)?/
-);
-
 export function extractPackageFile(
   content: string,
   packageFile: string
@@ -46,11 +43,20 @@ function extractDependency(dependency: Dependency): PackageDependency | null {
     return null;
   }
 
-  const match = gitUrl.exec(dependency.source.git.remote);
+  const gitRemote = parseUrl(dependency.source.git.remote);
+  if (gitRemote === null) {
+    logger.debug({ dependency }, 'Invalid Git remote URL');
+    return null;
+  }
+
+  const depName = join(
+    gitRemote.host,
+    gitRemote.pathname.replace(/\.git$/, ''),
+    dependency.source.git.subdir
+  );
 
   return {
-    depName:
-      dependency.name ?? match?.groups?.depName ?? dependency.source.git.remote,
+    depName,
     packageName: dependency.source.git.remote,
     currentValue: dependency.version,
     managerData: { subdir: dependency.source.git.subdir },