【问题标题】:How can I make a git submodule a normal folder?如何使 git 子模块成为普通文件夹?
【发布时间】:2017-02-23 00:23:26
【问题描述】:

我有一个包含许多子模块的项目,我试图让它们充当普通文件夹而不是 repos。我已经删除了每个文件夹中的 .git/ 文件夹,但它们仍然像子模块一样,当我运行 git status 时,它们似乎没有显示为未跟踪的文件。

【问题讨论】:

  • 你为什么要这么做?
  • 因为我需要一个“项目快照”
  • 为什么是引号?你究竟是什么意思意思?你在用快照做什么?
  • 我在做什么并不重要。当我推送容器应用程序时,我希望将子模块作为目录推送。现在它们被推送为 git 子模块
  • 是的,这很重要,因为可能有一种完全不同的方式来实现您正在做的任何事情,解决XY problem 可以让每个人的生活更轻松。推什么?为什么不管它们是否是子模块?

标签: git


【解决方案1】:

需要使用git rm 删除子模块(这将从文件系统中删除子模块的文件)。然后,您可以将子模块的存储库克隆到您的存储库中(使用git clone),删除“子模块”目录中的 .git 目录和git add

【讨论】:

  • 我使用了许多子模块。通常我克隆父项目,然后我运行一个“git submodule --init”,这样我就得到了子模块文件。它还将每个子模块的 HEAD 设置为特定的提交。因此,按照自己的方式进行操作,分别克隆每个子模块可能不会将它们指向正确的提交
  • 您可以在删除.git之前检查目录中的正确版本。
  • 如果我确实删除了 .git 文件夹,它仍然不会将子模块文件夹显示为未跟踪文件
  • 您是否首先使用git rm完全删除了子模块?
猜你喜欢
  • 2016-09-30
  • 2015-09-13
  • 1970-01-01
  • 2023-03-29
  • 2012-09-17
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
相关资源
最近更新 更多