【问题标题】:"no branch" on git submodulegit子模块上的“无分支”
【发布时间】:2018-11-18 20:13:53
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: git git-branch git-submodules


    【解决方案1】:

    这是一个简单的错误:

    在成功更新这个子模块的主分支到我想使用的提交后,从外部存储库抓取,我回到子模块的父项目,主项目,

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

    并发出git submodule update

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

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

    git add path/to/submodule
    

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-08-09
      • 2015-02-21
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 2019-09-02
      • 2015-07-03
      • 1970-01-01
      • 2015-11-07
      相关资源
      最近更新 更多