当子模块远程和提交更新时,Git pull 失败

问题描述 投票:0回答:1

上下文: 我有一个包含嵌套子模块的存储库。

/superProject
├── moduleA
│   └── moduleB

我需要将两个子模块的远程 URL 更新为两个原始存储库的分叉版本。我已经在 moduleA 中进行了相关更改以引用 moduleB 的新远程 URL,并在超级项目中进行了更新以引用 moduleA 的新 URL 和新提交。

现在我的问题是: 假设其他开发人员之一在子模块更新之前进行了较旧的提交。

现在如果他们拉最新的,他们会收到错误并且他们的分支没有更新:

fatal: remote error: upload-pack: not our ref $hash

Git 无法在不知道 moduleA 需要从新远程更新的情况下更新 moduleA 的提交。目前还做不到。让开发者干净利落地更新的正确做法是什么?

我尝试过使用以下组合:

git submodule deinit --all -f
git submodule sync --recursive
git submodule update --init --recursive

但我似乎无法找到一种方法来执行此更新而不删除模块文件夹,然后运行:

git pull
git submodule sync --recursive
git submodule update --init --recursive

有什么办法可以彻底解决这个问题吗?理想情况下,可以将其放入某种类型的配方甚至 git 别名中?

git git-submodules
1个回答
0
投票

我发现在这种情况下有效的唯一方法是:

  1. 删除模块A(以及模块B)
  2. 拉最新
  3. git submodule update --init --recursive

仍然对替代方案持开放态度,因为如果这种情况再次发生,这不是一个很好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.