无法使根子模块在Git上工作
我已经在特定文件夹中的存储库根目录中创建了一个子模块 我可以看到子模块在.git/.gitmodules和.gitmodules中注册良好,但我无法让它工作 如果我创建了git子模块状态或进行了更新,我看不到它 Git不能只看到这个子模块(其他子模块工作得很好) 你有线索吗无法使根子模块在Git上工作,git,github,git-submodules,Git,Github,Git Submodules,我已经在特定文件夹中的存储库根目录中创建了一个子模块 我可以看到子模块在.git/.gitmodules和.gitmodules中注册良好,但我无法让它工作 如果我创建了git子模块状态或进行了更新,我看不到它 Git不能只看到这个子模块(其他子模块工作得很好) 你有线索吗 感谢您抽出时间一个想法-您正在尝试添加一个空的回购协议作为子模块。子模块中至少需要有一个commit,因为它由commit id链接。请尝试在根repo中执行此命令: git ls-tree HEAD -r 你在结果中看到
感谢您抽出时间一个想法-您正在尝试添加一个空的回购协议作为子模块。子模块中至少需要有一个commit,因为它由commit id链接。请尝试在根repo中执行此命令:
git ls-tree HEAD -r
你在结果中看到你的子模块了吗?这条线应该是这样的:
160000 commit 72a0f63227341c35af566de0d6d4a76797ba22b2 my_submodule_dir
不管我做什么,Git都无法识别子模块 没有任何修改,我只是:
感谢您的所有回答git子模块状态未看到(完全)子模块的另一种情况是,所述子模块刚刚创建(初始化,但尚未更新) 这是有问题的,因为Git 2.18(2018年第2季度)修复了一个错误:“
Git子模块状态
”没有检查它为子模块头计算的符号修订名是否为空,并将其扔到printf
例程,该例程已被更正
参见(2018年4月18日)作者。(于2018年5月8日合并)
子模块--helper
:不要在“子模块状态
”中打印null
”
函数compute\u rev\u name()
有时会返回NULL
(例如右
在“子模块初始化”之后。
当前代码使“子模块状态”
”打印以下内容:
19d97bf5af05312267c2e874ee6bcf584d9e9681 sha1collisiondetection ((null))
此丑陋的“null
”不会为使用此命令的用户添加任何值。
更重要的是,在某些平台上,printf()
不能将NULL作为字符串处理
并将崩溃,而不是打印“(null)
”
检查此项并跳过打印此部分(替代方法是
打印“(不适用)
”或其他东西,但我认为这只是噪音)
您是否进行了git子模块更新
您是在创建子模块后移动了原始存储库,还是在Windows中运行它?使用1.7.8和1.7.9创建的子模块也有类似的问题(这在1.7.10中已修复)。更新没有任何更改,当我运行Git submodule命令时,Git无法看到子模块。自从我开始开发以来,我没有移动过回购协议。谢谢你的回答,我可以看到这些行,但是我的子模块的每个文件都有一行。知道发生了什么事吗?请注意,子模块的repo中充满了提交。关键时刻是树中的对象类型必须是“提交”,这意味着一个子模块。对于普通文件/文件夹,您会看到“树”或“blob”类型。你可以试着用grep找到它,比如:git-ls-tree-HEAD-r | grep“commit”P.S.如果子模块不是空的,那么我最初的建议是错误的子模块不是空的,我可以看到带有git-ls-tree-HEAD-rSubmodule的子模块的每个文件都是一个完全独立的存储库,它有自己的历史和树。所以,当您在根repo中执行'git ls tree HEAD-r'时,不应该在子模块中看到文件。如果您看到它们,那么git不会将此文件夹视为子模块。我会尝试完全删除它,然后用“git submodule add”再次添加