获取 git 子模块时出现“致命:远程错误:upload-pack:不是我们的引用”错误

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

场景

我正在尝试在我的个人服务器上设置

torch-mlir
存储库。该存储库有两个子模块,
llvm-project
mlir-hlo

现在,在我的服务器上,我已经有了

llvm-project
mlir-hlo
。但是,我无法替换
torch-mlir
项目中这些子模块的链接。


我尝试过的

  1. 克隆
    torch-mlir
    本地
  2. 替换了
    .gitmodule
    文件中子模块的url
  3. 使用命令:
    git submodule deinit
  4. 进入
    externals/llvm-project
    externals/mlir-hlo
    内部并分别执行以下命令:
    1. git remote set-url origin <my server path to llvm-project>
    2. git remote set-url origin <my server path to mlir-hlo>
  5. 回到项目根目录,执行
    git submodule sync
  6. 现已执行,
    git submodule update --init --recursive

我收到以下错误:

fatal: remote error: upload-pack: not our ref <aHash>
fatal: the remote end hung up unexpectedly
Fetched in submodule path 'externals/mlir-hlo', but it did not contain <aHash>. Direct fetching of that commit failed.

这个提交哈希甚至不存在于 mlir-hlo 的原始 github.com 存储库中。

更换子模块使其正常工作的正确方法是什么?

git git-submodules
1个回答
0
投票

我最终执行了以下操作(成功设置和构建):

我移动到

torch-mlir
目录下并执行以下步骤。

第 1 步:删除现有子模块

查看子模块当前状态:

git submodule status

我们希望删除这些,因为它们链接到 github.com 链接:

git rm -r --cached externals/mlir-hlo
git rm -r --cached externals/llvm-project
rm -rf externals/llvm-project; rm -rf  externals/mlir-hlo;

这将删除子模块及其缓存索引。

第2步:添加本地子模块配置

首先,更新子模块存储库的链接:

nano .gitmodules

现在,添加确保链接已彻底创建:

git submodule add --force <your server path to mlir-hlo>.git externals/mlir-hlo

git submodule add --force <your server path to llvm-project>.git externals/llvm-project

上述命令将下载存储库并将它们放置在子模块各自的路径中。

对于每个子模块,选择特定分支(在服务器的存储库上):

git submodule set-branch --branch main externals/mlir-hlo
git submodule set-branch --branch release/16.x externals/llvm-project

确保所有子模块同步:

git submodule update --init --recursive

此后,我们可以根据该项目的文档继续构建

torch-mlir
项目。

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