threads / discuss / 16442

How do I delete a git submodule?

Subject: How do I delete a git submodule?

## tl;dr

2 messages between Nov 24, 2008 and Nov 24, 2008.

replies: 1people: 2as markdown or json

Peter Krefting· Nov 24, 2008, 14:44 UTC · lore
Hi!

I am trying to remove a submodule from a project, but can't figure out how to do it. With "modules/aldc" as a submodule:

  $ cat .gitmodules
  [submodule "modules/aldc"]
          path = modules/aldc
          url = [...cut...]
  [...more entries here...]
  $ git status
  [...cut...]
  nothing to commit (working directory clean)
Starting from a clean set-up.
  $ git submodule rm modules/aldc
  -ff17d9e0e76d01e99d26aa16b28cf327c5abb48a modules/aldc
  $ git status
  [...cut...]
  nothing to commit (working directory clean)

The obvious command didn't give any errors, but didn't do anything, either. (I notice that there is no mention of a "git submodule rm" on the git-submodule man page.)

  $ git rm modules/aldc
  rm 'modules/aldc'
  fatal: git rm: modules/aldc: Permission denied
  $ git status
  [...cut...]
  nothing to commit (working directory clean)
Nope, that didn't work either.
What am I missing?
  $ git --version
  git version 1.6.0.2.1172.ga5ed0
(This is Git-1.6.0.2-preview20080923 on Windows XP)
-- 
\\// Peter - http://www.softwolves.pp.se/
Michael J Gruber· Nov 24, 2008, 15:51 UTC · re: Peter Krefting · lore

Re: How do I delete a git submodule?

Peter Krefting venit, vidit, dixit 24.11.2008 15:44:
Show 36 quoted lines
> Hi!
> 
> I am trying to remove a submodule from a project, but can't figure out
> how to do it. With "modules/aldc" as a submodule:
> 
>   $ cat .gitmodules
>   [submodule "modules/aldc"]
>           path = modules/aldc
>           url = [...cut...]
>   [...more entries here...]
>   $ git status
>   [...cut...]
>   nothing to commit (working directory clean)
> 
> Starting from a clean set-up.
> 
>   $ git submodule rm modules/aldc
>   -ff17d9e0e76d01e99d26aa16b28cf327c5abb48a modules/aldc
>   $ git status
>   [...cut...]
>   nothing to commit (working directory clean)
> 
> The obvious command didn't give any errors, but didn't do anything,
> either. (I notice that there is no mention of a "git submodule rm" on
> the git-submodule man page.)
> 
>   $ git rm modules/aldc
>   rm 'modules/aldc'
>   fatal: git rm: modules/aldc: Permission denied
>   $ git status
>   [...cut...]
>   nothing to commit (working directory clean)
> 
> Nope, that didn't work either.
> 
> What am I missing?
The last line of git help/man on git submodule status:
"This command is the default command for git-submodule."

git submodule ignores the "rm" (because it doesn't know that command) and does a "status" on modules/aldc.

OTOH, git rm refuses to do its thing, as you noticed. The brute force method seems to work:

rm -Rf modules/aldc #remove module from .gitmodules #remove module from .git/config git add -u git commit -m "get thee hence, modules/aldc"

I edited the two config files manually, but this can be scripted. git log -p shows a perfect diff including removal of the subproject commit, so I think the result of the above is fine. I think I'll work on a patch if nobody stops or beats me...

Cheers, Michael

← back to recent threads