Skip to content

Instantly share code, notes, and snippets.

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

Icy-Thought commented Mar 22, 2022

@Icy-Thought that's curious, what is your magit version? mine is Magit v3.3.0-199-g036f5cb7, Git 2.35.1, Emacs 27.1, gnu/linux

Magit 4e29d582, Git 2.35.1, Emacs 28.0.91, gnu/linux (using doom-emacs)

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:

Copy link

min-hinthar commented May 14, 2022

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

Copy link

RecoX commented May 23, 2022

This seems to be a more modern version (copied from

# 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


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


Copy link

slo-addy commented Jun 2, 2022

Life saver! Thank you.

Copy link

jairusjoer commented Aug 11, 2022

Thanks 🔥

Copy link

coeneivan commented Sep 18, 2022


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:

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

Copy link

SaSiNO97 commented Oct 21, 2022

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

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.

Copy link

stevenbarragan commented Oct 24, 2022

Thank you!

Copy link

JSAssassin commented Nov 2, 2022

Thank you. This is really helpful.

Copy link

barrientosvctor commented Dec 3, 2022

This gist is very helpful, thanks a lot!

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