跑:
$ git mv old/path/to/module new/path/to/module
.gitmodules适当地编辑和更改子模块的路径,然后使用将其放在索引中git add .gitmodules。
如果需要,创建子模块()的新位置的父目录。mkdir -p new/path/to
将所有内容从旧目录移动到新目录()。mv -vi old/path/to/module new/path/to/submodule
确保Git跟踪此目录()。git add new/path/to
使用删除旧目录。git rm --cached old/path/to/module
将目录及其所有内容移到。.git/modules/old/path/to/module.git/modules/new/path/to/module
编辑文件,确保工作树项指向新位置,因此在此示例中应为。通常,在该位置的直接路径中应该再有两个目录。。编辑文件,确保其中的路径指向主项目文件夹中正确的新位置,因此在此示例中。.git/modules/new/path/to/configworktree = ../../../../../old/path/to/module..new/path/to/module/.git.gitgitdir: ../../../.git/modules/new/path/to/module
git status 输出如下所示:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: .gitmodules
# renamed: old/path/to/submodule -> new/path/to/submodule
#
最后,提交更改。
此示例来自Stack Overflow,作者:Axel Beckert