Hello git experts, I have in the past attempted to integrate submodules into my primary repository using the same directory name. However, this has always caused headache when going to and from branches that take you between when this integration occurred and when it didn't. It's a bit hard to explain. Basically, if I have a submodule "foo", and I delete that submodule and physically add its files under the same directory "foo", when I do a pull to get this change from another clone, it fails saying: error: The following untracked working tree files would be overwritten by checkout: foo/somefile.txt Please move or remove them before you switch branches. Aborting could not detach HEAD Obviously, git can't delete the submodule because the files have also been added directly. I don't think it is built to handle this scenario. Here is the series of commands I ran to "integrate" the submodule (replace the submodule with a directory containing the exact contents of the submodule itself): #!/usr/bin/env bash mv "$1" "${1}_" git submodule deinit "$1" git rm "$1" mv "${1}_" "$1" git add "$1/**" The above script is named git-integrate-submodule, I run it like so: $ git integrate-submodule foo Then I do: $ git commit -m 'Integrated foo submodule' Is there any way to make this work nicely? The only solution I've found is to obviously rename the directory before adding the physical files, for example name it foo1. Because they're different, they never "clash".