2010-12-01 113 views
9

是否有任何方法可以在您的超级项目中移动子模块而不必先移除子模块并重新添加它们?用Git移动子模块

+0

这是在2010年问的。你链接的问题是从2011 – 2012-04-30 10:55:49

+0

当然,但另一个问题也是“更受欢迎”(例如它已超过三倍的意见,它和它的答案获得了更多投票 - 即使接受,相同的答案)。无论如何,因为任何接近的选票很久以前就会过期,所以没关系。 – 2012-04-30 22:12:38

回答

5

它类似于你如何删除子模块(见How do I remove a submodule?):

  • 编辑.gitmodules并相应地更改子模块的路径,并把它在指数git add .gitmodules
  • 如果需要,创建mkdir -p new/parent
  • 移动从旧到新目录中的所有内容:该子模块的新位置的父目录mv -vi old/parent/submodule new/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 
# 
  • 最后提交更改。