如何拉一个新的子模块
试图寻找本网站和其他人的答案: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克隆
更多链接:
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