Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使根子模块在Git上工作_Git_Github_Git Submodules - Fatal编程技术网

无法使根子模块在Git上工作

无法使根子模块在Git上工作,git,github,git-submodules,Git,Github,Git Submodules,我已经在特定文件夹中的存储库根目录中创建了一个子模块 我可以看到子模块在.git/.gitmodules和.gitmodules中注册良好,但我无法让它工作 如果我创建了git子模块状态或进行了更新,我看不到它 Git不能只看到这个子模块(其他子模块工作得很好) 你有线索吗 感谢您抽出时间一个想法-您正在尝试添加一个空的回购协议作为子模块。子模块中至少需要有一个commit,因为它由commit id链接。请尝试在根repo中执行此命令: git ls-tree HEAD -r 你在结果中看到

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

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

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

Git不能只看到这个子模块(其他子模块工作得很好)

你有线索吗


感谢您抽出时间

一个想法-您正在尝试添加一个空的回购协议作为子模块。子模块中至少需要有一个commit,因为它由commit id链接。请尝试在根repo中执行此命令:

git ls-tree HEAD -r
你在结果中看到你的子模块了吗?这条线应该是这样的:

160000 commit 72a0f63227341c35af566de0d6d4a76797ba22b2  my_submodule_dir

不管我做什么,Git都无法识别子模块

没有任何修改,我只是:

  • 删除子模块文件夹
  • 添加子模块
  • 子模块现在工作正常

    请注意,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”再次添加