git's current support for remote nicknames other than "origin" is restricted to tracking branches where branch.<name>.remote is defined. This does not work on detached heads, and thus does not work for managed submodules as those are kept on detached heads. When working with submodules, the remote must be called "origin." As my project is distributed across multiple domains with many firewalls and airgaps such that no single server is available to all, we really need to use nicknames to refer to different servers, and we need that to work well with submodules. So, this patch series: 1) defines a new "remotes.default" config variable per repository to be the default remote used if no branch.<name>.remote is found. 2) teaches clone to set remotes.default according to the user's command (via -o). 3) teaches remote rm to unset remotes.default if deleting that remote. 4) teaches git-submodule to propoagate the parent's default branch to submoules during "init", IFF those modules are defined using relative urls. (Modules using absolute urls are likely from a different server, so this inheritence is not likely the right thing in that case.) This is working well for me, allowing git clone -o myserver <url> project cd project git submodule init git submoule update to work as expected, with all submodules pointing to "myserver" rather than "origin" and updating correctly despite being on detached heads. Mark Levedahl - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html