代码之家  ›  专栏  ›  技术社区  ›  SoftTimur

在子模块路径中找不到当前原始/主版本

  •  46
  • SoftTimur  · 技术社区  · 9 年前

    在我的项目中(使用 git ),我需要使用 a library ,仍在进行中。我决定为这个库创建一个子模块,因为我想不时更新它的最新版本(我不打算在那里做我自己的更改)。

    我做到了:

    git submodule add https://github.com/mb21/JSONedit.git
    git commit -am 'added JSNedit submodule'
    git push -u origin master
    git pull origin master
    

    然后,我确实看到了本地文件夹中的JSONedit文件夹,以及git文件夹中的在线链接。但当我这么做的时候 git submodule update --remote JSONedit/ ,我得到了以下错误:

    fatal: Needed a single revision
    Unable to find current origin/master revision in submodule path 'JSONedit'
    

    有人知道这里怎么了吗?

    6 回复  |  直到 9 年前
        1
  •  62
  •   ryenus    5 年前

    git pull --recurse-submodules
    

    根据其他讨论,特别是 @Tobu pointed out in his comment over there ,如果错误仍然存在,则可能需要首先:

    移除子模块工作树(ext/blah)和中的匹配文件夹 GIT_DIR ( .git/modules/ext/blah )


    或者,您可以 git checkout 在子模块内部时要从中提取的分支,然后运行 git pull .

    结果应该是一样的。

        2
  •  11
  •   pranav    7 年前

    我也面临同样的问题。问题解决了。存储子模块的文件夹就在那里。当我手动删除文件夹时,它得到了解决。

        3
  •  10
  •   Community Mohan Dere    8 年前

    这个问题似乎已经在这个线程中解决了: Git submodules - pulling into a new clone of the super project . 简而言之,您应该尝试:

    # rm -rf JSONedit
    # git submodule update
    
        4
  •  9
  •   F1iX    4 年前

    在我的例子中,问题是Git子模块假设有一个分支 起源/主人 相反,子模块存储库只有一个分支 主要的 .

    我补充道 branch=main 中的子模块定义 .gitmodules .跑步后 git submodule sync , git submodule update --remote 现在效果很好。

        5
  •  6
  •   Ashish Sondagar    4 年前
    fatal: Needed a single revision
    Unable to find current origin/master revision in submodule path
    
    • 我面临这样的问题。。。
    • 我通过更新git版本来解决这个问题
        6
  •  0
  •   Suran Lee    3 年前

    在我的情况下,错误日志是

     Unable to find current origin/HEADER revision in submodule path 'JSONedit'
    

    这是因为我的多模块无法识别子模块的签出分支。 我通过在.gitmodules文件中设置子模块分支来解决这个问题。

    在多模块目录中

    git config -f .gitmodules submodule.{submodule name}.branch {branch name}
    git config -f .gitmodules submodule.JSONedit.branch main
    

    我想你可能不需要大师而不是大师。 通过命令“git branch”检查子模块目录中的分支。