假设我在 github 上找到一个有趣的存储库我想使用,我将其添加为子模块,然后有一天存储库的所有者决定删除该存储库,我的子模块会损坏吗?
您仍然拥有已获取的历史记录,可以通过子模块更新或获取或您想要的方式进行。您仍然可以从任何拥有它们的存储库中获取这些历史记录,并将它们推送到任何地方,重要的是历史记录,而不是您或任何人将它们保存在哪个存储库中。
.gitmodules
文件只是关于在哪里找到它们的注释;当上游删除其存储库时,这些注释就会过时,但这就是为什么 git submodule init
和 git submodule update
是单独的命令:init 从 .gitmodules
中的注释加载存储库的配置,然后您可以根据需要更改它们。
简短回答:
如果您的本地仍然有克隆的存储库,您将可以访问已删除子模块的所有提交历史记录,直到最后一个克隆。
如果您从 GitHub 重新克隆存储库,则不幸的是,子模块的内容将会丢失。
在任何情况下,如果您可以找到已删除子模块的另一个远程,例如 GitHub 上的分支,或磁盘上的另一个克隆,您也许能够从该远程恢复已删除的子模块。