git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: How do I delete a git submodule?

From
Michael J Gruber <git@drmicha.warpmail.net>
Date
Nov 24, 2008, 15:51 UTC
Message-ID
<492ACD74.30108@drmicha.warpmail.net>
In-Reply-To
<Pine.LNX.4.64.0811241537580.22925@ds9.cixit.se>
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

Previous: Peter Krefting
Message 2 of 2 in “How do I delete a git submodule?”
  1. Peter KreftingNov 24, 2008
  2. Michael J GruberNov 24, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.