移动子模块

Version > 1.8

跑:

$ git mv old/path/to/module new/path/to/module

Version <= 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. 编辑文件,确保 worktree 项指向新位置,因此在此示例中应该是。通常,在该位置的直接路径中应该还有两个 .. 然后目录。。编辑文件,确保其中的路径指向主项目 .git 文件夹中的正确新位置,因此在此示例中。 .git/modules/ new/path/to /config worktree = ../../../../../ old/path/to/module new/path/to/module /.git gitdir: ../../../.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. 最后,提交更改。

从这个例子堆栈溢出 ,由阿克塞尔贝克特