"no branch" 在 git 子模块上

"no branch" on git submodule

我正在开发一个 git 项目,该项目依赖于 git 子模块,该子模块指向一个过时的提交,该提交不能用于主项目。在成功地将这个子模块的主分支更新为我想使用的提交后,从外部存储库中获取,我回到子模块的父项目,主项目,并发出 git submodule update 据我所知这是让家长知道更新的正确方法。但是,如果我现在回到子模块文件夹,我会看到我在(无分支)上,它仍然是旧的不可用提交的分支。在子模块中,我确实看到更新的 master 分支到我想使用的版本。这让我认为我没有设法将子模块正确更新为我的首选提交。或者我不应该从主项目更新子模块?

谢谢!

这是一个简单的错误:

After successfully updating the master branch of this submodule to the commit I would like to use, grabbed from an external repository, I go back to the parent of the submodule, the main project,

到目前为止还不错,但是接下来:

and issue git submodule update

否:这会将子模块拉回到记录的旧快照。

让子模块进入所需状态后,您要做的是像您一样回到超级项目,然后 运行:

git add path/to/submodule

这会更新您的索引/暂存区,其方式与 git add 将常规文件复制到您的索引中的方式相同。

最终——当所有文件和子模块散列都正确时——你应该 运行 git commit 进行新的提交。新提交保存新快照,其中包括子模块的新哈希 ID,只要 this 提交是检出的,就会处于 "no branch / detached HEAD" 模式。

请注意,与常规文件不同,检出提交不会子模块放到正确的提交上;只有 git submodule update 做到了。