git子模块上的“no branch”

时间:2018-06-08 18:04:21

标签: git git-branch git-submodules

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

谢谢!

1 个答案:

答案 0 :(得分:0)

这是一个简单的错误:

  

成功将此子模块的主分支更新为我想使用的提交,从外部存储库抓取,我回到子模块的主体,即主项目,

到目前为止很好,但随后:

  

并发出git submodule update

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

将子模块置于所需状态后要执行的操作是返回超级项目,然后运行:

git add path/to/submodule

这会更新您的索引/暂存区域,就像git add将常规文件复制到索引中一样。

最终 - 当所有文件和子模块哈希值都正确时 - 您应该运行git commit进行新的提交。新提交保存新快照,其中包括子模块的新哈希ID,以及#34;没有分支/分离的HEAD"每当提交被签出时,模式就开启。

请注意,与常规文件不同,签出提交并不会子模块放到正确的提交中;只有git submodule update才能做到这一点。