用Git移动子模块

时间:2010-12-01 10:53:49

标签: git move git-submodules

有没有办法移动超级项目中的子模块而不先删除它们并重新添加它们?

2 个答案:

答案 0 :(得分:5)

它类似于删除子模块的方式(参见How do I remove a submodule?):

  • 编辑.gitmodules并适当更改子模块的路径,并将其放在带有git add .gitmodules
  • 的索引中
  • 如果需要,请创建子模块新位置的父目录:mkdir -p new/parent
  • 将所有内容从旧目录移至新目录:mv -vi old/parent/submodule new/parent/submodule
  • 使用git rm --cached old/parent/submodule
  • 删除旧目录

之后看起来像这样:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   .gitmodules
#       renamed:    old/parent/submodule -> new/parent/submodule
#
  • 最后提交更改。

答案 1 :(得分:1)

我认为现在还没有。

教学“ patch in the making ”有git mv如何处理移动子模块,包括如何更新.gitmodules文件。
但它还没有。
只需switching a remote repo for an existing submodule is simpler,但不是你想要的。