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
@Godsmith
Copy link

Godsmith commented Apr 6, 2022

FYI, removing a git submodule is much simpler now with a modern Git version in 2022. Just run git rm <path-to-submodule> and commit.

Taken from here: https://stackoverflow.com/questions/1260748/how-do-i-remove-a-submodule

@min-hinthar
Copy link

min-hinthar commented May 14, 2022

It works. Thanks for the share! Have fun coding.

@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

jairusjoer commented Aug 11, 2022

Thanks 🔥

@coeneivan
Copy link

coeneivan commented Sep 18, 2022

👍

@panozzaj
Copy link

panozzaj commented Sep 22, 2022

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

SaSiNO97 commented Oct 21, 2022

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

@dptsolutions
Copy link

dptsolutions commented Oct 24, 2022

@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

stevenbarragan commented Oct 24, 2022

Thank you!

@JSAssassin
Copy link

JSAssassin commented Nov 2, 2022

Thank you. This is really helpful.

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