为什么我的git repo子模块无法更新?

时间:2020-09-01 14:09:39

标签: git git-submodules

我有一个依赖子模块的仓库(父项目)。我需要将子模块更新为最新提交,但无法正常工作。

我这样创建了子模块: git submodule add https://github.com/library.git(不是真实姓名)

我试图用此更新它: git submodule update --remote --merge

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

我更新了子模块的仓库,提交并推送。这样可行。我更新了父项目中的子模块,但无法正常工作。我对父项目进行了更改,提交和推送。子模块仍未更新。

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

如果我发出以下命令:git submodule update --remote --merge,则没有响应。

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

2 个答案:

答案 0 :(得分:0)

好吧,我发现是否删除了子模块,然后再次添加它,就得到了最新的推送。这并不理想,但至少可以奏效,我可以继续前进。

git submodule deinit -f path
git rm -f path

我不确定这些命令的确切作用,但我遵循了一项建议,它确实有效。我仍然对这样做有更好的兴趣。

答案 1 :(得分:0)

git submodule update --remote应该已经使用默认的master来更新了子模块的代码。

但是如果默认情况下不起作用:

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