Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I "uninitialize" a git submodule?

I'm developing for an embedded project that has the Linux source tree as a submodule. I'm currently working on a non-development machine, so I'll never build with this repository; it's just for reference.

At one point I initialized the linux submodule (bringing in about 2.5GB of data), but now I want to reverse the process, leaving the linux submodule uninitialized in this repository. To be clear, I don't want to check in any changes to the submodule as far as Git is concerned; I just want my disk space back.

How can I do this? I could delete the ./linux and .git/modules/linux directories to get rid of all the unneeded data, but I suspect that will leave git righteously confused and annoyed.

like image 832
Daniel Griscom Avatar asked May 01 '19 14:05

Daniel Griscom


1 Answers

The first three steps of the following are how you permanently delete a submodule; the fourth step will tell git to restore the module, but not to reinitialize it.

1) Remove the submodule entry from .git/config:
git submodule deinit -f path/to/submodule

2) Remove the submodule repository from the superproject's .git/modules directory:
rm -rf .git/modules/path/to/submodule

3) Remove the submodule directory located at path/to/submodule:
git rm -f path/to/submodule

4) Tell git to discard the removal of the submodule; it will return the module to the "uninitialized" state, leaving it with no changes to be committed:
git checkout -- .

Source

like image 62
EncryptedWatermelon Avatar answered Oct 23 '22 23:10

EncryptedWatermelon