Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Complete remove of git submoule
#!/bin/bash
if [ $# -ne 1 ]; then
echo "Usage: $0 <submodule full name>"
exit 1
fi
MODULE_NAME=$1
MODULE_NAME_FOR_SED=$(echo $MODULE_NAME | sed -e 's/\//\\\//g')
cat .gitmodules | sed -ne "/^\[submodule \"$MODULE_NAME_FOR_SED\"/,/^\[submodule/!p" > .gitmodules.tmp
mv .gitmodules.tmp .gitmodules
git add .gitmodules
cat .git/config | sed -ne "/^\[submodule \"$MODULE_NAME_FOR_SED\"/,/^\[submodule/!p" > .git/config.tmp
mv .git/config.tmp .git/config
git rm --cached $MODULE_NAME
rm -rf .git/modules/$MODULE_NAME
rm -rf $MODULE_NAME
@moyaldror

This comment has been minimized.

Copy link
Owner Author

moyaldror commented Feb 14, 2019

@zx1986

This comment has been minimized.

Copy link

zx1986 commented Mar 7, 2019

nice!

@zhangyu911013

This comment has been minimized.

Copy link

zhangyu911013 commented Jul 23, 2019

nice script~but I find that when the submodule is the last in the .gitmodules file,the config isn't deleted correctly.
And I happened to find out another script that git provided works as well.

git config -f .gitmodules --remove-section submodule.$MODULE_NAME
git add .gitmodules
git config -f .git/config --remove-section submodule.$MODULE_NAME
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.