Git 将新子模块添加到旧子模块的位置

Git 将新子模块添加到旧子模块的位置,git,git-submodules,Git,Git Submodules,我在此文件夹abc/submodule中有一个子模块,我使用以下命令将其删除: rm -rf abc/submodule # remove submodule in .gitmodules # remove submodule in .git/config git rm --cached abc/submodule git push origin master repo="submodule" rm -rf $(cd $repo && git rev-parse --git-d

我在此文件夹abc/submodule中有一个子模块,我使用以下命令将其删除:

rm -rf abc/submodule
# remove submodule in .gitmodules
# remove submodule in .git/config
git rm --cached abc/submodule
git push origin master
repo="submodule"
rm -rf $(cd $repo && git rev-parse --git-dir)
rm -rf $repo
git rm --cached "$repo"
git config --remove-section submodule."$repo"
git config -f .gitmodules --remove-section submodule."$repo"
现在我想在同一位置添加新的子模块:

git submodule add <link> abc/submodule
将显示旧子模块的内容,而不是新子模块的内容。如何修复此问题?

git子模块将git信息存储在$toplevel/.git/modules/$sm\u路径中。要完全删除它,您需要删除该目录。您应该能够执行以下命令:

rm -rf abc/submodule
# remove submodule in .gitmodules
# remove submodule in .git/config
git rm --cached abc/submodule
git push origin master
repo="submodule"
rm -rf $(cd $repo && git rev-parse --git-dir)
rm -rf $repo
git rm --cached "$repo"
git config --remove-section submodule."$repo"
git config -f .gitmodules --remove-section submodule."$repo"
这是git子模块deinit的扩展,它只执行与git子模块init相反的操作

请注意,您需要在推送之前提交这些更改,因为这些更改只是暂存的。

git子模块将git信息存储在$toplevel/.git/modules/$sm\u路径中。要完全删除它,您需要删除该目录。您应该能够执行以下命令:

rm -rf abc/submodule
# remove submodule in .gitmodules
# remove submodule in .git/config
git rm --cached abc/submodule
git push origin master
repo="submodule"
rm -rf $(cd $repo && git rev-parse --git-dir)
rm -rf $repo
git rm --cached "$repo"
git config --remove-section submodule."$repo"
git config -f .gitmodules --remove-section submodule."$repo"
这是git子模块deinit的扩展,它只执行与git子模块init相反的操作

请注意,您需要在推送之前提交,因为这些更改只是阶段性的