如何拉新的子模块

Pys*_*sis 17 git git-submodules

试图在这个网站和其他人寻找答案: 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子模块与Git克隆

更多链接:

小智 27

git submodule update --init local/path/to/submodule/folder
Run Code Online (Sandbox Code Playgroud)

  • `git submodule update --init` (未指定文件夹路径)似乎会拉取所有新的子模块 (8认同)

Fab*_*olm 6

你必须做两件事:

  1. 不要git pull在持有子模块你的主存储库。这会将新的子模块添加为空目录。
  2. 不要git submodule update --recursive --remote在主存储库中。这将拉取所有子模块的最新更改,包括新的。

这至少适用于 Git 2.13。另请注意,如果存储库和子模块在 GitHub 上,您必须确保您有权访问它们(如果它们是私有的)。