如何将Git子模块移动到子目录?

sha*_*jia 13 git git-submodules

伙计们,我只是使用子模块来组织一些Git repos,这里是地址: repos

我想将所有子模块移动到一个名为repos的新目录中,例如,jquery - > repos/jquery.

我更改.gitmodules文件,但似乎不起作用.我该怎么办?

Phi*_*zen 18

刚刚遇到同样的问题并最终删除了子模块引用(如本文所述)并在我想要的地方重新创建它.

按照你的移动子模块的例子jqueryrepos/jquery

  1. 从中删除(通常为三行)子模块引用.gitmodules.
  2. 检查.git/config对子模块的引用并删除它们(如果存在)
  3. git rm --cached jquery从存储库中删除子模块引用
  4. 删除旧的子模块文件夹
  5. 使用,重新创建子模块引用(如您之前所做的那样) git submodule add git://github.com/jquery/jquery.git repos/jquery

如果你的子模块被设置为特定的标签,分别提交(你肯定会在一个稳定的项目中),你将再次设置它.

由于这个复杂的过程,我强烈希望(或者至少在git路线图上)有一种更直接的方法来实现这一目标.如果没有,肯定会有一些脚本混在一起,以便更快地做到这一点......

  • 从 git 1.8.5 开始,`git mv old/submod new/submod` 按预期工作,并为您完成所有管道工作。您可能想要使用 git 1.9.3 或更高版本,因为它包含子模块移动的修复。[(来源)](/sf/ask/322314051/)。 (17认同)