Hi Jacob! Thanks for the report! I think we'd need a bit more info, specifically: - How did you rename the remote? - What command is doing the submodule fetch? Or, if you could include a reproduction script, that would be really helpful :) Jacob Keller <jacob.keller@xxxxxxxxx> writes: > Hi, > > I've been running into an issue with submodules trying to fetch using > "origin" even though the submodule does not have a remote by that > name. (I recently switched the submodule remote name) How did you rename the remote? e.g. did you run `git remote rename`, or did you rename it manually? I'll come back to why this might be important... > > remote: Enumerating objects: 210, done. > remote: Counting objects: 100% (207/207), done. > remote: Compressing objects: 100% (54/54), done. > remote: Total 210 (delta 123), reused 197 (delta 119), pack-reused 3 > Receiving objects: 100% (210/210), 107.20 KiB | 4.29 MiB/s, done. > Resolving deltas: 100% (123/123), completed with 48 local objects. > From <redacted> > ... > Fetching submodule submodule > From <redacted> > 85e0da7533d9..80cc886f1187 <redacted> > Fetching submodule submodule2 > fatal: 'origin' does not appear to be a git repository > fatal: Could not read from remote repository. > > Please make sure you have the correct access rights > and the repository exists. > Errors during submodule fetch: > submodule2 I assume this is `git fetch` running in the superproject? > I thought at first there might be some configuration value in the > parent that is selecting origin, but I can 't find one. I also thought > maybe its some sort of defaulting to origin but I looked through > submodule code and didn't find one. > > Is it just that submodule code is not resilient against changing the > default remote name away from origin? Yes, in a sense, though I'm not sure if this is the source of your problems. When fetching with `git fetch`, submodules are fetched without specifying the remote name, which means Git guesses which remote you want to fetch from, which is documented at https://git-scm.com/docs/git-fetch. I believe (I haven't reread this very closely) this is, in order: - The remote of your branch, i.e. the value of the config value `branch.<name>.remote` - origin This is why `git remote rename` matters, because `git remote rename` will also rename `branch.<name>.remote`. If you have a branch checked out in your submodule, you might want to double-check your .git/config. But... I'll mention another wrinkle for completeness' sake (though I don't think it applies to you). If you fetch using `git submodule update`, the submodule is fetched using a _named_ remote, specifically: - If the superproject has a branch checked out, it uses the name of the superproject branch's remote. - If the superproject does not have a branch checked out, it uses "origin". > > Thanks, > Jake