• 1
Votes
name
name Punditsdkoslkdosdkoskdo

What is the current way to remove a git submodule?

as of git version 1.9.3 (Apple Git-50) on mac how do i remove a git submodule? I am reading alot of outdated information with many developers telling me they wont work. What is the current way ? will git deinit pathToSubModule do the trick ?

The steps i thought would work are here but comments say they wont.

Let me explain my current situation and what i need accomplished. I've installed the Quick repository and added it to as submodule to my project. This code is already checked in and others are using it. What i now need to do is fork the same Quick repository and host it on a more secure github that my company has (so a completely other private github). After forking it i want to add that fork as a gitSubmodule and let it replace the current Quick submodule i had installed previously.

update: i've read that the following is the correct way on latest git version please confirm?

To remove a submodule added using:

git submodule add blah@blah.com:repos/blah.git lib/blah
Run:

git rm lib/blah
That's it.

For old versions of git (circa ~1.8.5) use:

git submodule deinit lib/blah
git rm lib/blah
git config -f .gitmodules --remove-section submodule.lib/blah

 

I'm using Git version 2.16.2 and git rm does the job mostly well:

git rm path-to-submodule

You can verify with git status and git diff --cached that this deinitializes the submodule and modifies .gitmodules automatically. As always, you need to commit the change.

However, even though the submodule is removed from source control, .git/modules/path-to-submodule still contains the submodule repository and .git/config contains its URL, so you still have to remove those manually:

git config --remove-section submodule.path-to-submodule
rm -rf .git/modules/path-to-submodule

Keeping the submodule repository and configuration is intentional so that you can undo the removal with e.g. git reset --hard.

  • 0
Reply Report