删除git子模块的当前方法是什么?

j2e*_*nue 82 git github git-submodules

对于Mac上的git版本1.9.3(Apple Git-50)如何删除git子模块?我正在阅读很多过时的信息,许多开发人员告诉我他们不会工作.目前的方式是什么?会git deinit pathToSubModule 做的伎俩?

我认为可行的步骤在这里,但评论说他们不会.

让我解释一下我目前的情况以及我需要完成的工作.我已经安装了快速存储库并将其添加到我的项目的子模块中.此代码已经签入,其他人正在使用它.我现在需要做的是分叉相同的Quick存储库并将其托管在我公司拥有的更安全的github上(所以完全是其他私有github).在分叉之后我想将该fork添加为gitSubmodule并让它替换我之前安装的当前Quick子模块.

更新:我已经读过以下是关于最新git版本的正确方法请确认一下?

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
Run Code Online (Sandbox Code Playgroud)

Cod*_*ard 173

你有 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>
Run Code Online (Sandbox Code Playgroud)

deinit

取消submodule.$name注册给定的子模块,即将整个
部分.git/config与其工作树一起删除.

进一步呼吁git submodule update,git submodule foreachgit submodule sync跳过所有未注册的子模块,直到再次初始化,所以使用这个命令,如果你不想在你的工作树中的子模块的本地结账了.

如果您确实要从存储库中删除子模块并提交使用该子模块git rm.

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

  • 我想彻底消灭我和其他用户的子模块.所以我需要的是git submodule deinit asubmodule; 和git rm asubmodule ?? 还有其他用户缓存的子模块,他们是否必须在下拉后删除它? (8认同)

mrt*_*rts 11

我正在使用 Git 版本 2.16.2 并且git rm大部分工作做得很好:

git rm path-to-submodule
Run Code Online (Sandbox Code Playgroud)

您可以使用git status和验证git diff --cached这会取消初始化子模块并.gitmodules自动修改。与往常一样,您需要提交更改。

但是,即使子模块从源代码管理中删除,.git/modules/path-to-submodule仍然包含子模块存储库并.git/config包含其 URL,因此您仍然必须手动删除它们:

git config --remove-section submodule.path-to-submodule
rm -rf .git/modules/path-to-submodule
Run Code Online (Sandbox Code Playgroud)

保留子模块存储库和配置是有意的,以便您可以使用例如撤消删除git reset --hard

  • 最新答案和最短解决方案 (2认同)