Mic*_*urr 6 git git-submodules
这个问题有没有办法让git pull自动更新子模块?有一个接受的配置git的答案,如下所示:
git config --global submodule.recurse true
Run Code Online (Sandbox Code Playgroud)
就像对该答案的评论之一,我想知道为什么这不是git的默认行为; 更确切地说,设置此配置选项有哪些缺点?
提交046b482中引入了此选项,最初用于工作树操作命令(read-tree/ checkout/ reset)
git grep/ fetch/ pull/ push紧随其后。
但是,如文档所述,与下面的其他命令不同,clone仍需要其自己的递归标志:git clone --recurse-submodules <URL> <directory>。
请参阅最近的讨论:
一旦引入,这就是设计决定,因为
git clone可能太大。
也许我们需要重新考虑该决定,然后克隆子模块(如果submodule.recurse已设置)。
由于调用的子模块的数量/大小可能很大,因此,默认情况下,默认情况下,现在默认不递归地包含它们。
它们的主要缺点是可能需要递归地进入每个子模块(以及它们各自的子模块)而引入可能的时间开销。
如果您有很多,并且不需要全部,则最好不要选择该选项,并指定--recursive何时需要它。
但是,一个优势是避免在切换分支时看到“未跟踪的文件”,如本讨论中所示。