【问题标题】:Moving submodules with Git [duplicate]使用 Git 移动子模块 [重复]
【发布时间】:2010-12-01 10:53:49
【问题描述】:

有什么方法可以在你的超级项目中移动子模块而不先删除它们并重新添加它们?

【问题讨论】:

  • 这是 2010 年提出的。您链接的问题来自 2011 年
  • 当然,但另一个问题也更“流行”(例如,它的观点是三倍以上;它和它的答案获得了更多的选票——甚至是被接受的相同答案)。无论如何,这无关紧要,因为任何接近投票早已过期。
  • 这里也有人问过这个问题:stackoverflow.com/questions/4604486/…

标签: git move git-submodules


【解决方案1】:

这与删除子模块的方式类似(请参阅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
#
  • 最后提交更改。

【讨论】:

  • 希望有一个 Git 命令可以为您完成所有这些;)
  • 这些说明不起作用。
  • 对我也不起作用; new/parent/submodule 显示为未跟踪文件,old/parent/submodule 已删除。我最终删除并阅读了子模块
  • 你需要git添加新的子模块目录。
【解决方案2】:

我认为暂时没有。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-23
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    相关资源
    最近更新 更多