【问题标题】:Why does my git repo submodule fail to get updated?为什么我的 git repo 子模块无法更新?
【发布时间】:2020-12-20 16:05:17
【问题描述】:

我有一个依赖于子模块的 repo(父项目)。我需要将子模块更新为最新的提交,但它不起作用。

我创建了这样的子模块: git submodule add https://github.com/library.git(化名)

我试图用这个来更新它: git submodule update --remote --merge

它不起作用。我在父项目中仍然有旧代码。当我查看子模块的 repo 中的代码时,新代码就在那里。

我更新了子模块的 repo,提交和推送。这样可行。我更新了父项目中的子模块,这不起作用。我对父项目进行了更改,提交并推送。子模块仍未更新。

我按照一篇帖子中的建议尝试了git submodule --init。这是一个可怕的命令。首先,它将子模块中的所有代码复制到父项目中,这是一种浪费,是错误的潜在来源,现在在两个位置使用相同的代码加上完全相同的错误(旧)代码。

如果我发出这个命令:git submodule update --remote --merge,我没有得到任何响应。

有人知道如何更新父项目以指向最新的子模块吗?

【问题讨论】:

    标签: git git-submodules


    【解决方案1】:

    git submodule update --remote 应该已将子模块的代码更新为最新的,默认情况下,master。

    但如果默认不工作:

    1. 确保您使用的是最新的 Git 2.28(如果不是,请升级并检查问题是否仍然存在)
    2. 尝试重新创建模块,这次是specifying which branch you want to track (git submodule add -b master <URL to Git repo>)
    3. 如果不起作用,请尝试beginning of this answer 处的脚本,该脚本将进入每个模块并拉取。

    【讨论】:

      【解决方案2】:

      好吧,我发现如果我删除子模块然后再次添加它,我会得到最新的推送。不理想,但至少它有效,我可以继续前进。

      git submodule deinit -f path
      git rm -f path
      

      我不确定这些命令到底是做什么的,但我遵循了一个建议并且它有效。我仍然有兴趣以更好的方式做到这一点。

      【讨论】:

        猜你喜欢
        • 2012-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-17
        • 2015-02-06
        相关资源
        最近更新 更多