假设我在 GitHub 上发现一个有趣的代码仓库并想要使用它,我将其作为子模块添加,那么如果该代码仓库的所有者决定删除该仓库,我的子模块会变成无效吗?
假设我在 GitHub 上发现一个有趣的代码仓库并想要使用它,我将其作为子模块添加,那么如果该代码仓库的所有者决定删除该仓库,我的子模块会变成无效吗?
您已经获取到的历史记录,可以使用子模块更新或抓取等方式进行操作。您仍然可以从任何拥有这些历史记录的存储库中获取它们,并将其推送到任何地方,重要的是历史记录,而不是任何人保留这些历史记录的存储库。 .gitmodules
文件只是关于如何找到它们的注释;当上游删除其存储库时,这些注释就过时了,但这就是为什么 git submodule init
和 git submodule update
是单独的命令:init 从 .gitmodules
的注释中加载您的存储库配置,然后您可以随意更改它们。
git submodule update
会为您克隆和/或获取(然后检出或者使用您从 .gitmodules
配置的默认值)。当您 git add
子模块提交时,Git 会在您提交的树中记录提交 ID。Git 实际上并不关心该提交来自何处,事实上 git submodule
是一个辅助命令,它可以帮助您获取您的历史记录中要检出的提交。这就是它的全部作用。 - jthillgit submodule update
,那么我是否会从被删除之前的阶段获取所有已删除存储库的文件? - off99555.gitmodules
中的 URL 不再托管该仓库,则无法这样做。如果您可以找到所需提交的替代来源,可以更新配置以指向仍然(或现在)有效的 URL 或路径,然后再次尝试。许多子模块的内容实际上并不是可选的,我已经开始在主仓库中携带非可选子模块历史记录。助手命令对此并没有真正的自动化,但设置很容易,使用 git submodule init 和 git worktree add 即可。 - jthill