示例项目:
https://github.com/hpvdt/HMD-nreal/tree/cleanup/dev1
当我 checkout 这个项目并尝试与它的所有子模块同步时,我得到了一个非常令人担忧的错误消息:
git submodule update --remote --recursive
fatal: Unable to find refs/remotes/origin/HEAD revision in
submodule path 'Assets/NRSDK'
这是因为refs/remotes/origin/HEAD
不是一个修订版本,也不是一个分支名称。
什么可能导致这种缺陷?这是git中的bug吗?我使用的是git版本2.40.1.windows.1。
2条答案
按热度按时间unhi4e5o1#
由于子模块一旦进入其中就像一个独立的存储库,因此您可以直接测试子模块。如果您在超级项目的cleanup/dev 1分支上将目录(cd)更改为Assets/NRSDK,则可以运行
git show-ref
以查看它拥有的所有引用。我还经常运行git fetch -pv
来确保看到远程服务器上的内容(-p标志删除远程服务器上不再存在的陈旧引用)。refs/remotes/origin/HEAD
是一个符号引用,表示远程默认分支上的最新提交。如果你在任何一个子模块中运行git show-ref
,你 * 应该 * 看到refs/remotes/origin/HEAD
被列出-如果没有,你的仓库可能有问题。--remote
标志指示git-submodule update
将子模块更新到远程跟踪分支。如果在.gitmodules
(或config)中没有指定,它会将子模块更新为默认的远程HEAD,即refs/remotes/origin/HEAD
。mcdcgff02#
这是存储库结构-当问题被提出时。
所以不清楚你需要的子模块是什么。