【发布时间】:2018-11-28 07:49:14
【问题描述】:
这个问题Is there a way to make git pull automatically update submodules? 有一个像这样配置 git 的公认答案:
git config --global submodule.recurse true
就像那个答案的 cmets 之一,我想知道为什么这不是 git 的默认行为;更准确地说,设置此配置选项有什么缺点?
【问题讨论】:
-
IMO,您不应该总是希望自动更新子模块,因为它们可能会在开发时破坏您的应用程序。一旦我确定我的代码,我宁愿更新它们。如果这是默认行为,那可能会让我很难调试。
-
@Brewal 您能否详细说明他们如何“在开发时破坏您的应用程序”?自动更新子模块并不意味着将它们更新到最新版本。这意味着将它们更新为父存储库指定的提交哈希。在开发过程中,子模块应该是稳定的。相反,如果子模块与父存储库所期望的不同步,不更新它们可能会破坏事情。
-
@jamesdlin 我的意思是,如果您在子模块中有您关心的本地更改,那么使用这种配置可以武装您的本地开发,因为不知道拉动做了什么;而在拉动时使用 explicit 标志可确保您知道自己在做什么。这对 IMO 很重要,因为并非所有在您的存储库上工作的开发人员都会捕捉到这种设置。
-
我看不出子模块有什么不同。拉取任何存储库都有可能破坏未提交的本地更改,不是吗?
标签: git git-submodules