Github上有两个回购协议:Repo1
和Module1
我之前已经用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。
1条答案
按热度按时间bxfogqkk1#
首先,检查远程
Repo1
GitHub仓库是否在.gitmodules
文件中正确引用了Module1
。你应该看到:
其次,尝试使用
clone --recurse-submodules
选项在不同的文件夹中再次克隆Repo1
:然后打开GitHub桌面,并引用新的
Repo1
克隆。检查
Module1
是否已正确导入。