Hi, Sometimes (my local repository has lots of branches) after switching branches git submodule update --init --recursive fails with something like fatal: transport 'file' not allowed fatal: Fetched in submodule path 'wsrep-lib', but it did not contain e238c0d240c2557229b0523a4a032f3cf8b41639. Direct fetching of that commit failed. the submodule transport is not 'file' (it's https) and the direct fetching of the commit actually works: cd wsrep-lib git fetch origin e238c0d240c2557229b0523a4a032f3cf8b41639 git checkout e238c0d240c2557229b0523a4a032f3cf8b41639 cd .. after that git submodule update --init --recursive succeeds. This happens deterministically, but depends on the old and new commits in the last checkout. As a workaround we've had to change our CI to do git submodule foreach --recursive 'git fetch origin $sha1;git checkout --force FETCH_HEAD' This is the bit from `git bugreport`: [System Info] git version: git version 2.39.3 cpu: x86_64 no commit associated with this build sizeof-long: 8 sizeof-size_t: 8 shell-path: /bin/sh uname: Linux 5.15.88-gentoo #1 SMP Wed Feb 15 16:42:45 CET 2023 x86_64 compiler info: gnuc: 11.3 libc info: glibc: 2.36 $SHELL (typically, interactive shell): /bin/bash [Enabled Hooks] Regards, Sergei