Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
How effectively delete a git submodule.

To remove a submodule you need to:

  • Delete the relevant section from the .gitmodules file.
  • Stage the .gitmodules changes git add .gitmodules
  • Delete the relevant section from .git/config.
  • Run git rm --cached path_to_submodule (no trailing slash).
  • Run rm -rf .git/modules/path_to_submodule (no trailing slash).
  • Commit git commit -m "Removed submodule "
  • Delete the now untracked submodule files rm -rf path_to_submodule
@RecoX
Copy link

RecoX commented May 23, 2022

This seems to be a more modern version (copied from https://stackoverflow.com/a/36593218/2066118):

# Remove the submodule entry from .git/config
git submodule deinit -f path/to/submodule

# Remove the submodule directory from the superproject's .git/modules directory
rm -rf .git/modules/path/to/submodule

# Remove the entry in .gitmodules and remove the submodule directory located at path/to/submodule
git rm -f path/to/submodule

We should upvote this answer

Done!

@psytron
Copy link

psytron commented May 27, 2022

I think above can be simplified using following commands.
git submodule deinit <path_to_submodule>
git rm <path_to_submodule>
git commit-m "Removed submodule "
rm -rf .git/modules/<path_to_submodule>

true works efficiently. Thnks

Excellent!

@slo-addy
Copy link

slo-addy commented Jun 2, 2022

Life saver! Thank you.

@jairusjoer
Copy link

Thanks 🔥

@coeneivan
Copy link

👍

@panozzaj
Copy link

Building on the answers above...

If you're doing this a lot, you can create an executable script discoverable in your PATH named git-submodule-remove with the following contents: https://github.com/panozzaj/conf/blob/master/common/bin/git-submodule-remove

Then you can run git submodule-remove path/to/submodule to quickly remove it.

@SaSiNO97
Copy link

rm -rf is Linux/UNIX only, you shouldn't assume that we're all using Linux

@dptsolutions
Copy link

@SaSiNO97 - If you're not on a *NIX environment you are likely on Windows then, and you can use my Powershell variant I shared earlier in this thread.

@stevenbarragan
Copy link

Thank you!

@JSAssassin
Copy link

Thank you. This is really helpful.

@barrientosvctor
Copy link

This gist is very helpful, thanks a lot!

@johannes-steurer
Copy link

Just perfect. Thank you

@michaelmontero
Copy link

amazing

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment