使用Git移动子模块

9
有没有办法在不先删除并重新添加子模块的情况下将其移动到超级项目中?

这个问题是在2010年提出的。你链接的那个问题是从2011年的。 - rafi
当然,但另一个问题也更“受欢迎”(例如,它的浏览量是其三倍以上;它及其答案获得了更多的投票 - 即使是被接受的相同答案)。无论如何,这并不重要,因为任何关闭投票都已经过期了。 - Chris Johnsen
这个问题也在这里被问到了:https://dev59.com/j2445IYBdhLWcg3w_O8m - 5tephenBennett
2个回答

5

这类似于你删除一个子模块的方式(参见如何删除子模块?):

  • 编辑.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
#
  • 最后提交更改。

4
希望有一个 Git 命令,可以为你完成所有这些操作 ;) - rafi
1
这些指令不起作用。 - awolf
3
我也试过,new/parent/submodule 出现了未跟踪文件,而 old/parent/submodule 被删除了。最后我只能先将子模块删除,再重新添加。 - wutz
1
你需要使用git add命令添加新的子模块目录。 - mpe

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接