【问题标题】:What is the +Subproject commit?+Subproject 提交是什么?
【发布时间】:2020-11-12 05:46:54
【问题描述】:

我想从 gitlab 克隆一个旧项目。当我将它克隆到我的电脑时,我发现有两个文件夹什么都没有。所以我检查了来自 gitlab 的 Commits 并且有如下信息:

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

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

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

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

【问题讨论】:

  • 缺少.gitmodules 文件并不会阻止 Git 拥有和需要使用子模块,它只会阻止 Git 自动提供子模块。提供缺少的.gitmodules 或手动初始化子模块。
  • @torek 那么我该如何初始化.gitmodules file?我应该只创建一个名为 .gitmodules 的文件夹吗?
  • @Lynx 除非您拥有包含这些文件夹内容的远程存储库的 URL,否则您不会对其进行初始化。如果您不知道这些文件夹使用了哪个存储库,则没有要恢复的子模块。
  • .gitmodules 文件是一个文件(不是文件夹),具有特殊语法,正如 git config -f .gitmodules 所理解的那样。您必须创建此文件并将允许 Git 找到 other Git 存储库或存储库的正确信息放入其中。最好的方法是从正确的 Git 存储库集合开始并使用git submodule 创建.gitmodules 文件,但听起来.gitmodules 文件的正确内容丢失了。除非您记得,否则创建正确的内容并非易事。

标签: ios xcode git github gitlab


【解决方案1】:

检查结果:

git ls-tree HEAD folderxxx

如果您看到 160000,则表示它是索引中的一个特殊条目,表示 git submodule(检查您是否有 .gitmodules)或嵌套​​ Git 存储库的根文件夹。

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

【讨论】:

  • 是的,有一个 160000。而且不是.gitmodules,而是.git。我发布的上面的图片是.git 文件夹的内部。那么如何获取代码呢?
  • @Lynx 你必须从它的源代码复制它,因为如果没有.gitmodules,Git 将不知道从 哪里 获取代码。
猜你喜欢
  • 2011-02-04
  • 2015-05-20
  • 1970-01-01
  • 1970-01-01
  • 2012-05-08
  • 2017-02-05
  • 2016-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多