如何拉一个新的子模块

试图寻找本网站和其他人的答案:StackOverflow - 简单的方法拉最新的所有子模块

他们似乎都想讨论一下,如果你正在控制它们,而不是其他人添加一个,并且我只是想将另外一个添加到我的项目中,而无需存储或备份我的更改,如果我需要删除该文件夹。

我应该删除.gitmodules文件和/或我已经用git clone --recursive拉下来的子模块目录吗? (StackOverflow - 如何git clone包括子模块?)

这些命令似乎也没有帮助:

  • git submodule update --init --recursive似乎没有做任何事情。
  • git submodule update --recursive没有。
  • git fetch --recurse-submodules输出Fetching submodule ...几次。
  • git pull --recurse-submodules输出相同的东西,然后说Already up-to-date. 取回试用后。 奇怪,因为在任何情况下,我的子模块已经下载。
  • git clone --recursive ... 还没有试过。 我觉得可以用Stash或其他方式覆盖我所做的任何更改。
  • git submodule update --recursive --remote为其中一个子模块签出一个新的提交SHA。
  • git submodule update --recursive为其中一个子模块签出了新的提交SHA。 可能是较旧的原始提交级别。
  • git submodule status为每个提供了适当的SHA,版本和名称信息,但仍然缺乏我想要的。
  • git submodule foreach git pull origin master
  • git submodule update什么都不做。
  • 我每次都手动仔细检查库目录,以确定是否出现附加子模块。

    我想避免执行某些操作,除非它们不破坏我当前的存储库状态(包含代码更改),并且解决了我的问题,以防它是我提到但未运行的命令,或者其他任何人尝试过。

    我可以用更多的努力来尝试其中的一些,但我想我现在想停止与他们混合,并且因为在做一些在线搜索之后我还没有找到这个问题的答案,所以也许有希望和最终的答案会帮助其他人。

    我是否患有这里提到的骗局? 软件工程 - Git子模块vs Git克隆

    更多链接:

  • StackOverflow - 将Git子模块更新为原始最新提交

  • git submodule update --init local/path/to/submodule/folder
    

    目前为止我收到的最好的建议是运行这个命令:

    git submodule add <URL_to_submodule> <local_path_to_place_submodule>
    

    所以它看起来是另一个贡献者所做的,即使它已经存在于远程中,我仍然会这样做。

    我想这不会从技术上更新远程数据中的.gitmodules文件,例如预期的内容,但还没有找到一种方法来实现这一点。

    信贷的帮助去@pandatrax。

    更新

    在尝试add方法之前,我尝试了1个更多的想法,包括手动从远程复制.gitmodules文件并尝试任何更新命令,但遗憾的是,这种方法也无法工作。 如果我在根中执行命令,它可能会有所不同,因为我在一个子文件夹中,但我怀疑它。

    然后我使用add方法,它下载了依赖项,但.gitmodules文件显示了更改。 一旦我设置了GitHub远程并在丢弃该文件后从其中取出,现在项目似乎处于更好的状态,即使同步更新模块或2的提交SHA,无论是匹配还是被覆盖。


    你必须做两件事:

  • git pull你的主要存储库,其中包含子模块。 这会将新的子模块添加为空目录。
  • git submodule update --recursive --remote在主存储库中。 这将拉动所有子模块的最新更改,包括新模块。
  • 这至少在Git 2.13中起作用。 另请注意,如果存储库和子模块位于GitHub上,则必须确保您有访问权限(如果它们是私有的)。

    链接地址: http://www.djcxy.com/p/92383.html

    上一篇: How to pull a new submodule

    下一篇: Can't reset a file to a specific commit using Git