繁体   English   中英

git子模块上的“ no branch”

[英]“no branch” on git submodule

我正在一个git项目上工作,它依赖于git子模块,该模块指向过时的提交,而该提交对于主项目不可用。 在成功地将此子模块的master分支更新为我想使用的提交(从外部存储库中抓取)后,我返回到子模块的父级(主项目),并发出git submodule update因为我理解这是正确的使家长了解更新的方法。 但是,如果现在移回子模块文件夹,则会看到我处于(无分支)状态,这仍然是旧的无法使用的提交的分支。 在子模块中,我确实看到了我想使用的版本更新的master分支。 这使我认为我没有设法正确地将子模块更新为我的首选提交。 还是不应该从主项目中更新子模块?

谢谢!

这是一个简单的错误:

在将该子模块的master分支成功更新为我想使用的提交(从外部存储库中获取)后,我返回到子模块的父级,即主项目,

到目前为止很好,但是然后:

并发布git submodule update

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

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

git add path/to/submodule

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

最终-当所有文件和子模块的哈希都正确时-然后应运行git commit进行新的提交。 新提交将保存新快照,其中包括子模块的新哈希ID,只要提交已签出,子模块就将处于“无分支/分离的HEAD”模式。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM