添加一个跟踪主分支的Git子模块

3
我正在使用git 1.8.4,并尝试添加一个跟踪另一个存储库主分支的子模块。我尝试按照以下方式添加它:
git submodule add -b master /path/to/myrepo.git

当我尝试添加它时,会出现以下错误。
Cloning into 'myrepo.git'...
warning: You appear to have cloned an empty repository.
done.
fatal: Cannot update paths and switch to branch 'master' at the same time.
Did you intend to checkout 'origin/master' which can not be resolved as commit?
Unable to checkout submodule 'myrepo'

我不确定这是什么意思……有人可以解释一下吗?

你能否尝试进入那个子模块,执行 git checkout -b master origin/master 命令,返回上一级目录,然后执行 git submodule update --remote --init 命令? - VonC
当我尝试第一个checkout命令时,我收到了相同的消息,内容如下:致命错误:无法同时更新路径并切换到分支'master'。您是否打算checkout 'origin/master',但该提交无法解析? - Jeff Storey
然后在子模块中尝试:git branch -b master; git reset --hard origin/master(如https://dev59.com/gGQn5IYBdhLWcg3wCzik#17137740所示)。但是,如果它仍然抱怨“origin / master”,那么该子模块的远程可能不正确。 git remote -v返回什么?实际repo /path/to/myrepo.git中是否有主分支? - VonC
好的。前进的一种方式是从父仓库的新克隆开始(没有任何关于你的子模块的引用),并重复以下步骤:git submodule add -b master /path/to/myrepo.git ; git submodule update --remote --init - VonC
好的,谢谢。我会尝试一下。可能要等一段时间才能处理,但我会发布结果。感谢您的帮助。 - Jeff Storey
显示剩余4条评论
1个回答

2
子模块似乎没有分支(即:“cd子模块; git branch -avvv”不返回任何内容),这意味着父仓库中的子模块配置未正确初始化和更新。我在评论中提到:一个前进的方法是从没有引用你的子模块的父仓库的新克隆开始,并重复步骤。
git submodule add -b master /path/to/myrepo.git ; 
git submodule update --remote --init. –

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接