该错误意味着在克隆子模块时无法从任何引用访问特定提交(其 sha1),因此您应该使用有效引用更新子模块或将更改重置为最新版本。
当您在本地分支中进行新提交或包含对分离的 HEAD 的引用时,可能会发生这种情况,但您尚未将它们推送到子模块 git URL 指向的主存储库中。
要手动将子模块重置为原点/主模块,请输入子模块的子目录并进行重置,例如
cd client/src/util
git reset origin/master --hard
如果您想更正主仓库中的引用,请在执行上述操作后提交更改:
# Still in submodule dir.
git pull origin master # In submodule dir.
git push origin master
cd - # Go back to the main repo dir.
git status
git commit -am 'Update submodule refs'
git push
如果您想将引用从 fork 拉取并推送到 origin,您可以尝试:
cd client/src/util # Go to submodule dir again.
git remote add fork git@github.com:example/foo.git
git pull fork master
git show a094dcfeeb43fcd62a9e466156e05e7581026f33 # Check previously missing sha1.
git push origin master:master # Or: master:some_branch