什么是+子项目提交?

3

我想从GitLab上克隆一个旧项目。当我把它克隆到我的电脑上时,我发现有两个文件夹里面什么也没有。所以我检查了来自GitLab的提交记录,里面有如下信息:

Folder Name@xxxxxxx
+++ a/Folder Name
+Subproject commit xxxxxxxxxxxxxxxxxxxx

Folder Name@xxxxxxx
+++ a/Folder Name
+Subproject commit xxxxxxxxxxxxxxxxxxxx

而且我找不到.gitmodules文件,只有一个.git文件。

files in .git

我对此一无所知。 有人知道如何加载这两个“文件夹”的代码吗?


缺少 .gitmodules 文件并不会阻止 Git 拥有和需要使用子模块,它只是无法自动提供子模块。请提供缺失的 .gitmodules 文件或手动初始化子模块。 - torek
@torek那我该如何初始化.gitmodules文件呢?我只需要创建一个名为.gitmodules的文件夹吗? - Lynx
@Lynx,除非您拥有包含这些文件夹内容的远程存储库的URL,否则不要初始化它。如果您不知道用于这些文件夹的存储库,则没有子模块可供恢复。 - VonC
.gitmodules 文件是一个文件(不是文件夹),具有特殊的语法,由 git config -f .gitmodules 理解。您必须创建此文件并在其中放置正确的信息,以使Git能够找到其他 Git 存储库。最好的方法是从正确的 Git 存储库集合开始,并使用 git submodule 创建 .gitmodules 文件,但似乎 .gitmodules 文件的正确内容已经丢失了。除非您记得它,否则创建正确的内容是非常棘手的。 - torek
1个回答

0

检查以下结果:

git ls-tree HEAD folderxxx

如果你看到160000,那意味着它是索引中表示git子模块的根文件夹或嵌套Git存储库的特殊条目(检查是否有.gitmodules)。

这就解释了为什么你有一个空文件夹,因为Git通常不会对没有数据(文件)的文件夹进行版本控制。


是的,有一个160000。而没有.gitmodules,但有一个.git。我上面发布的图片是.git文件夹的内部。那么我该怎么做才能获取代码呢? - Lynx
@Lynx 你必须从源代码中复制它,因为如果没有 .gitmodules,仅有 Git 是不知道从哪里获取代码的。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接