Git no-url-found-for-submodule-path A submodule configuration stanza names its path but carries no url key.

dev@local: ~/project — git
dev@local~/project$git status
Cloning into 'libs/shared-module'...
error: no url found for submodule path
Diagnostics Translation
A submodule configuration stanza names its path but carries no url key.
waiting for resolution...
MediumVersion Control System

Reviewed for reference consistency: August 11, 2026

Code is Safe

SECURE

Git has paused the operation to protect your code. No data has been lost or corrupted.

What To Know

A submodule's identity is half-recorded here: the path is known, but the versioned metadata carries no URL, so Git has nowhere to fetch the child repository from.

Where Did It Fail?

Working Tree
Your local files
add
Staging Index
Prepared changes
commit
Local Repo
Commit history
push/fetch
Remote Server
GitHub/GitLab
The error involves the internal Git database or commit history structure.

Commands That Trigger This

A hand-edited .gitmodules lost its url line during a merge conflict
A submodule entry was copy-pasted with only the path half
An automated tool wrote a placeholder stanza without filling in the URL

Technical Background

01

.gitmodules is the versioned contract between the superproject and its children. The gitlink entry in the index records that a submodule exists at a path; the .gitmodules stanza is where Git learns where to fetch it from. A path without a url leaves the gitlink pointing at nothing nameable.

02

The message is a sibling of 'no submodule mapping found in .gitmodules for path' — that one fires when the stanza is missing entirely, this one when the stanza exists but is incomplete. Both are repaired by editing the same file, whose layout is plain INI.

Underlying Causes

The url key is absent from the [submodule "<path>"] section
The url line was dropped while resolving a merge conflict in .gitmodules
Section headers and keys drifted out of alignment after manual edits
The stanza names one path while the url lives under a different section

Frequently Asked Questions

Submodule URLs also live in .git/config after initialization, but the versioned file is where the value must originate before init can copy it.

The path is the only identifier available; the URL is precisely the missing piece Git was searching for.

Related Git States