尝试在此网站和其他人上寻找答案: StackOverflow - Easy way pull latest of all submodules
他们似乎都想谈谈你是否在控制它们,而不是如果其他人添加了一个,我只想将额外的一个添加到我的项目中,而不必隐藏或备份我的更改,如果我需要删除文件夹中。
我应该删除.gitmodules
文件和/或我已用git clone --recursive
删除的子模块目录吗?
(StackOverflow - How to git clone
including submodules?)
这些命令似乎也没有帮助:
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
什么也没做。我每次都手动仔细检查库目录,以确定是否出现了附加子模块。
我想避免执行某些操作,除非它们对我当前包含代码更改的存储库状态没有破坏性,并且解决了我的问题,以防它是我提到但没有运行的命令,或者其他人有另一个尝试。
我可以用更多的努力尝试其中的一些,但我想我现在想停止搞乱它们,因为在做了一些在线搜索后我还没有找到这个问题的答案,也许有希望和最终的答案会无论如何都要帮助别人。
我是否患有这里提到的骗局? Software Engineering - Git submodule vs Git clone
更多链接:
答案 0 :(得分:24)
git submodule update --init local/path/to/submodule/folder
答案 1 :(得分:3)
到目前为止,我收到的最佳建议是运行此命令:
git submodule add <URL_to_submodule> <local_path_to_place_submodule>
所以它看起来是另一个贡献者会做的,我会再做一次,即使它已经存在于遥控器中。
我想这在技术上并不会像远程数据一样更新远程数据中的.gitmodules
文件,但还没有找到办法。
帮助归功于@pandatrax。
<强>更新强>
在尝试add
方法之前,我尝试了另外一个想法,即手动从远程复制.gitmodules
文件并尝试任何更新命令,但遗憾的是这种方法也不起作用。如果我在root中执行命令,可能会有所不同,因为我在子文件夹中,但我对此表示怀疑。
然后我使用了下载依赖项的add
方法,但.gitmodules
文件显示了更改。一旦我设置了GitHub遥控器并在丢弃该文件后从中取出,该项目现在似乎处于更好的状态,甚至同步更新模块或2的提交SHA,因为它们匹配或被覆盖。
答案 2 :(得分:2)
你必须做两件事:
git pull
,其中包含子模块。这会将新的子模块添加为空目录。git submodule update --recursive --remote
。这将为所有子模块提取最新更改,包括新的子模块。这至少在Git 2.13中起作用。另请注意,如果存储库和子模块位于GitHub上,则必须确保您具有对它们的访问权限(如果它们是私有的)。
答案 3 :(得分:1)
只要新的子模块位于远程的.gitmodules中,此方法就可以工作
git pull --recurse-submodules
答案 4 :(得分:0)
当我通过以下命令更新子模块时,为我的子模块解决了问题:
function MyComponent() {
return <div dangerouslySetInnerHTML={myContent} />;
}