且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

目前删除git子模块的方式是什么?

更新时间:2023-01-14 07:47:53

你有 git submodule deinit

  git submodule deinit < asubmodule> 
git rm< asubmodule>
#注意:asubmodule(无尾随斜线)
#或者,如果你想把它留在工作树中
git rm --cached< asubmodule>
rm -rf .git / modules /< asubmodule>






deinit




取消注册给定的子模块,即 .git / config 删除整个子模块$ name

部分>与他们的工作树一起。



进一步调用 git子模块更新 git submodule foreach git submodule sync 跳过所有未注册的子模块,直到它们再次初始化为止,所以如果您不想拥有本地再次检查工作树中的子模块。



如果您确实想从存储库中删除子模块并提交使用 git rm 代替。



如果指定 - force ,子模块的工作树即使包含本地修改也将被删除。



as of git version 1.9.3 (Apple Git-50) on mac how do i remove a git submodule? I am reading alot of outdated information with many developers telling me they wont work. What is the current way ? will git deinit pathToSubModule do the trick ?

The steps i thought would work are here but comments say they wont.

Let me explain my current situation and what i need accomplished. I've installed the Quick repository and added it to as submodule to my project. This code is already checked in and others are using it. What i now need to do is fork the same Quick repository and host it on a more secure github that my company has (so a completely other private github). After forking it i want to add that fork as a gitSubmodule and let it replace the current Quick submodule i had installed previously.

update: i've read that the following is the correct way on latest git version please confirm?

To remove a submodule added using:

git submodule add blah@blah.com:repos/blah.git lib/blah
Run:

git rm lib/blah
That's it.

For old versions of git (circa ~1.8.5) use:

git submodule deinit lib/blah
git rm lib/blah
git config -f .gitmodules --remove-section submodule.lib/blah

You have the git submodule deinit

git submodule deinit <asubmodule>    
git rm <asubmodule>
# Note: asubmodule (no trailing slash)
# or, if you want to leave it in your working tree
git rm --cached <asubmodule>
rm -rf .git/modules/<asubmodule>


deinit

Un-register the given submodules, i.e. remove the whole submodule.$name
section from .git/config together with their work tree.

Further calls to git submodule update, git submodule foreach and git submodule sync will skip any unregistered submodules until they are initialized again, so use this command if you don’t want to have a local checkout of the submodule in your work tree anymore.

If you really want to remove a submodule from the repository and commit that use git rm instead.

If --force is specified, the submodule’s work tree will be removed even if it contains local modifications.