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.

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