Git 移动子模块

示例

1.8

跑:

$ git mv old/path/to/module new/path/to/module
1.8
  1. .gitmodules适当地编辑和更改子模块的路径,然后使用将其放在索引中git add .gitmodules。

  2. 如果需要,创建子模块()的新位置的父目录。mkdir -p new/path/to

  3. 将所有内容从旧目录移动到新目录()。mv -vi old/path/to/module new/path/to/submodule

  4. 确保Git跟踪此目录()。git add new/path/to

  5. 使用删除旧目录。git rm --cached old/path/to/module

  6. 将目录及其所有内容移到。.git/modules/old/path/to/module.git/modules/new/path/to/module

  7. 编辑文件,确保工作树项指向新位置,因此在此示例中应为。通常,在该位置的直接路径中应该再有两个目录。。编辑文件,确保其中的路径指向主项目文件夹中正确的新位置,因此在此示例中。.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
    #
  8. 最后,提交更改。


此示例来自Stack Overflow,作者:Axel Beckert