代码之家  ›  专栏  ›  技术社区  ›  Coocoo4Cocoa

Git:无法从主分支“对象-它是子模块”合并

  •  1
  • Coocoo4Cocoa  · 技术社区  · 16 年前

    我很难从我的主分支合并到一个独立的分支,我已经开发了很长一段时间了。

    通过直接合并,我得到以下结果:

    shell$ git merge master
    fatal: cannot read object asd211f3a58febecd4e447szxs733079211c71b7sa '/my/sub/dir/foo~master': It is a submodule!
    

    显然我没有正确地移除子模块,或者其他东西严重损坏。

    我甚至不知道有多少不同程度的破碎。但这是一个两步走的问题。在失败的合并出现后,除了一堆文件之外,子模块也出现了。

    清理此存储库的最佳方法是什么?

    2 回复  |  直到 16 年前
        1
  •  1
  •   gahooa    16 年前

    我可以建议:

    git reset --hard ORIG_HEAD
    

    然后用以下方法研究子模块:

    git submodule status
    

    你有电话吗 .gitmodules 文件准备好了吗?尽最大努力从两个分支中删除子模块的概念(提交它),然后重新尝试合并。

        2
  •  0
  •   Rahul Vats    15 年前

    在我的例子中,我有一个名为“main”的分支,它依赖于库的特定版本,作为子模块存储和跟踪。主(主干)使用库的dev版本,因此删除了子模块。当它到达子模块时,执行简单的git合并将失败,并且无法提供下一步要做什么的线索:

     git merge --no-commit main/urology-main
     fatal: cannot read object 7bd71249fc9575b7985bcd6b65e77f14690a6be6 'Utech_DTools': It is a submodule!
    

    similar question 建议使用特定的“解决”合并策略:

     git merge -s resolve --no-commit main/urology-main
     ERROR: Utech_DTools: Not handling case 66001ac8d03d8b930c72536d3946ca40e3810320 ->  -> 7bd71249fc9575b7985bcd6b65e77f14690a6be6
    

    但是,在跳过子模块后合并确实继续。

    推荐文章