yaoningvital / blog

my blog
31 stars 4 forks source link

关于在 Git 中删除子模块需要做哪些操作 及 删除中遇到的错误的处理 #211

Open yaoningvital opened 4 years ago

yaoningvital commented 4 years ago

一、在主项目中删除一个子项目,需要做哪些操作?

(1)删除子项目文件夹

$ rm -rf  src/pages/biz-test

(2)手动删除 .gitmodules 里面该子项目的 gitlink

比如,删除掉 .gitmodules 里面的下面的内容:

// .gitmodules中手动删除下面的内容
[submodule "src/pages/biz-test"]
    path = src/pages/biz-test
    url = https://hyperv28.msdi.cn/tfs/Power5DBIM/PRP_Front/_git/biz-test

(3)删除掉 $GIT_DIR/modules/

这里,原来我是把子项目 biz-test 添加到了 src/pages/biz-test ,所以在 $GIT_DIR/modules/src/pages下有一个 biz-test 文件夹,把这个文件夹删除。

cd $GIT_DIR/modules/src/pages
rm -rf biz-test

(4)git rm --cached <path_to_submodule>

如果做了上面三步,然后直接 git submodule add <submodule_url> <path_to_submodule>, 会提示:'submodule_name already exists in the index',此时需要用 :

git rm --cached src/pages/biz-test

来删除子模块,然后就可以进行 git submodule add 操作了。

二、删除子项目过程中遇到的错误及解决方法

1、提示 fatal: No url found for submodule path in .gitmodules

think@think-PC MINGW64 /e/zny/projects/zny-boilerplate (master)
$ git submodule init
fatal: No url found for submodule path 'src/pages/biz-quality' in .gitmodules

解决方法: 提示上面的 fatal 信息,执行下面的命令:

git rm --cached

think@think-PC MINGW64 /e/zny/projects/zny-boilerplate (master)
$ git rm --cached src/pages/biz-quality
rm 'src/pages/biz-quality'

2、提示 fatal: please stage your changes to .gitmodules or stash them to proceed

think@think-PC MINGW64 /e/zny/projects/zny-boilerplate (master)
$ git rm --cached src/pages/Design
fatal: please stage your changes to .gitmodules or stash them to proceed

解决方法: 提示上面的 fatal 信息,执行下面的命令:

git submodule deinit git add . git commit -m git rm --cached