Thank you for filling out a Git bug report! Please answer the following questions to help us understand your issue. What did you do before the bug happened? (Steps to reproduce your issue) Make a git repository with a submodule in it. Make two different commits in the main repository with two different versions of the submodule, one of them is the head of the branch. Checkout the head of the branch in the main repository, and make a submodule update. Make a modification, do not commit it, in a submodule file that will not result in a "error: Your local changes to the following files would be overwritten by checkout" when the other version of the library will be checked out. Go back to the main repository and make a checkout of the other commit with the switch --recurse-submodules. What did you expect to happen? (Expected behavior) The checkout with the switch --recurse-submodules should fail when there are uncommitted changes in the submodule. What happened instead? (Actual behavior) Uncommitted changes in the submodule are discarded without any notifications. What's different between what you expected and what actually happened? Loss of the uncommitted changes in the submodule. Anything else you want to add: I stay at your disposal if you need more information. Please review the rest of the bug report below. You can delete any lines you don't wish to share. [System Info] git version: git version 2.30.0.windows.1 cpu: x86_64 built from commit: 18da6dbba950f8cc7b7d07057f7c30bf7cf207b6 sizeof-long: 4 sizeof-size_t: 8 shell-path: /bin/sh uname: Windows 10.0 19041 compiler info: gnuc: 10.2 libc info: no libc information available $SHELL (typically, interactive shell): C:\Program Files\Git\usr\bin\bash.exe [Enabled Hooks] Sincerely yours, Kevin Bernard