Git 子模块初始化到 HEAD 而不是特定的提交

Git submodule init to HEAD instead of specific commit

在我的项目中,我有一个 git 子模块跟踪 repo B。 当在新机器上克隆 repo 时,git sobmodule 似乎跟踪特定的提交,所以当在 repo B 中完成新提交时,我必须手动拉取主 repo,并且然后提交它,否则 repo 的新克隆将最终拥有 repo B 旧提交的子模块,这是正常行为吗?我可以让 sobmodule 跟踪 HEAD 而不是特定的提交吗?

这是正常的预期行为。基本上,您希望在克隆之后始终在您的工作目录中保持可预测的状态。如果 repo B 更新了,你必须手动获取并合并这些更新,然后测试它仍然可以与你的主 repo A 正常工作,然后你可以在 repo A 上提交信息 "submodule is now on commit XXX".

如果对存储库 B 执行了您没有注意到的更改,这可以避免不必要的行为。如果子模块总是指向 "latest commit",你不能确定你的项目 A 总是与子模块 B 同步。