为什么我不能从git仓库中拉入这个子模块?

5gfr0r5j  于 2023-02-14  发布在  Git
关注(0)|答案(1)|浏览(432)

Github上有两个回购协议:Repo1Module1
我之前已经用Github Desktop将这两个repos克隆到我的本地windows机器上,这两个repos存在于以下两个文件夹中:

  • C:\Users\Me\Documents\GitHub\Repo1
  • C:\Users\Me\Documents\GitHub\Module1

现在,有人添加了Module1作为Repo1的子模块,当我在线查看Github时,我看到Module1存在于Repo1\submodules之下。
如果我转到命令行并在Repo1文件夹git submodule update --init中运行以下命令,则会出现两个错误。首先,在git CLI中,我看到输出:

Submodule 'submodules/Module1' (https://github.com/MyOrg/Module1.git) registered for path 'submodules/Module1'
fatal: not a git repository: C:/Users/Me/Documents/GitHub/Repo1/submodules/Module1/../../.git/modules/submodules/Module1
Failed to clone 'submodules/Module1'. Retry scheduled
BUG: submodule considered for cloning, doesn't need cloning any more?
fatal: could not get a repository handle for submodule 'submodules/Module1'

在Github Desktop中,它开始说:

Can't find "Repo1"
It was last seen at C:\Users\Me\Documents\GitHub\Repo1

完成此操作后,我的本地计算机上会出现一个新文件C:\Users\Me\Documents\GitHub\Repo1\submodules\Module1\.git,其中包含以下内容:
gitdir: ../../.git/modules/submodules/Module1
如果我删除了这个文件,Github Desktop会重新开始识别repo,但是,尝试获取repo并不会引入子模块Module1,我的本地机器上会有一个空的C:\Users\Me\Documents\GitHub\Repo1\submodules\Module1文件夹。
这让我想到,当子模块是从不同的架构(Linux / Mac)添加的,不知何故,一个路径被硬编码,它在错误的地方寻找。但是,我真的不知道这个子模块的功能如何工作,我不知道从这里去哪里。我需要Github桌面或Git CLI拉入子模块与repo。

bxfogqkk

bxfogqkk1#

首先,检查远程Repo1 GitHub仓库是否在.gitmodules文件中正确引用了Module1
你应该看到:

[submodule "Module1"]
        path = submodules/Module1
        url = https://github.com/aUser/Module1

其次,尝试使用clone --recurse-submodules选项在不同的文件夹中再次克隆Repo1

git clone --recurse-submodules https://github.com/aUser/Repo1

然后打开GitHub桌面,并引用新的Repo1克隆。
检查Module1是否已正确导入。

相关问题