我仍然试图绕过GIT子模块。让我说我正在使用指向公共存储库的子模块,我只能读取它。
当该存储库脱机并且不再可访问时,我的项目会发生什么?
答案 0 :(得分:3)
这是git / DSCM的优点之一:您的本地克隆是一个完整的常备存储库。子模块也不例外。
任何“中央”存储库都只是项目agree
的开发人员推送更改的位置。最简单的写访问意味着您可以推动这个预先商定的位置。从理论上讲,你甚至可以联网多个“中央”repo主机,并让开发人员推送到每个主机,或者让每个repo运行挂钩以便彼此同步。
因为git存储库的每个克隆(包括子模块)本身都是一个完整的repo,如果该中央官方推送位置发生变化,或者消失,你仍然拥有一个完全可用的存储库,对你的本地克隆具有完全的读/写访问权限。
如果官方子模块项目开发人员认为他们只是想重新定位他们的“中央”克隆,那么您所要做的就是更新子模块的遥控器以指向新的正确位置。
请参阅:
<强>更新强>
假设您的项目可以被其他人访问。这隐含意味着这些用户还需要访问项目使用的任何子模块。
您可以重新托管您的本地子模块(称为“forks”)并修改您的主项目仓库以引用分叉的仓库。这比复制/粘贴更受欢迎,即使官方回购仍然存在,也可能是一个好主意。当然,这取决于原始项目的许可。
为什么这是一个好主意的几个原因:
official
核心存储库的写入权限的情况下对您的分支进行更改。答案 1 :(得分:1)
在某种程度上,子模块被视为单独的存储库。因此,如果您的子模块repo脱机 - 则无法更新子模块。
当您使用子模块时,您暗示在整个开发周期中所有开发人员都可以访问该repo。
仅对相对稳定的组件使用子模块。
答案 2 :(得分:1)
您的存储库是您的,您仍然拥有以前所做的一切。如果您可以找到该项目的其他来源,只需更改URL即可。 .gitmodules
中的内容是管理分发时的行政协助,没有任何内容表明您必须使用建议的URL。您的仓库使用.git/config
中的内容。 git submodule
只会加载默认值。