1

我已经在我的存储库根目录中的特定文件夹中创建了一个子模块。

我可以看到子模块已在 .git/.gitmodules 和 .gitmodules 中很好地注册,但我无法让它工作。

如果我创建 git 子模块状态或进行更新,我看不到它。

Git 不能只看到这个子模块(其他的运行良好)。

你有什么踪迹吗?

谢谢你的时间

4

3 回答 3

0

一个想法 - 您正在尝试添加一个空仓库作为子模块。您需要在子模块中至少有一个提交,因为它是通过提交 ID 链接的。尝试在根 repo 中执行此命令:

git ls-tree HEAD -r

您在结果中看到您的子模块吗?该行应如下所示:

160000 commit 72a0f63227341c35af566de0d6d4a76797ba22b2  my_submodule_dir
于 2012-04-12T12:34:53.723 回答
0

无论我做什么,Git 都无法识别子模块。

没有任何修改,我只是:

  1. 删除子模块文件夹
  2. 添加子模块

子模块现在可以正常工作。

请注意,Git 没有添加新的子模块,他只是按应有的方式识别子模块。

感谢您的所有回答

于 2012-04-17T11:27:29.117 回答
0

git submmodule status 没有看到(完全)子模块的另一种情况是刚刚创建了所述子模块(初始化,但尚未更新)

这是有问题的,因为 Git 2.18(2018 年第二季度)修复了一个错误:“ git submodule status”没有检查它为子模块 HEAD 计算的符号修订名称不是 NULL,并将其扔到printf例程中,这已得到纠正。

请参阅Nguyễn Thái Ngọc Duy ( ) 的提交 0b5e2ea(2018 年 4 月 18 日(由Junio C Hamano 合并 -- --0cd58d8 提交中,2018 年 5 月 8 日)pclouds
gitster

submodule--helper: 不要null在 ' submodule status'中打印

该函数有时compute_rev_name()会返回NULL(例如,在' submodule init'之后)。
当前代码使 ' submodule status' 打印:

19d97bf5af05312267c2e874ee6bcf584d9e9681 sha1collisiondetection ((null))

这个丑陋的 ' null' 对使用此命令的用户没有任何价值。
更重要的是,printf()在某些平台上无法将 NULL 作为字符串处理,并且会崩溃而不是打印 ' (null)'。

检查这一点并跳过打印这部分(替代方法是打印' (n/a)'或其他东西,但我认为这只是噪音)。

于 2018-05-23T19:57:06.740 回答