周末在家里做了一些工作,周一到办公室,执行git更新办公室电脑上的代码时,报错了
git submodule update --init faceapi-rpc-cpp/dependencies/common_source_cpp/
error: Server does not allow request for unadvertised object 50db78feb453236961657c9f2ff8c50ed0bbebaf
Fetched in submodule path ‘faceapi-rpc-cpp/dependencies/common_source_cpp’, but it did not contain 50db78feb453236961657c9f2ff8c50ed0bbebaf. Direct fetching of that commit failed.
怎么也没想明白是怎么回事儿,
在网上找了半天也没有找到解决办法,但大概知道就是在更新子模块时,服务器上找不到submodulecommon_source_cpp
指定的commit 50db78feb453236961657c9f2ff8c50ed0bbebaf
.
怎么会找不到提交呢?我笔记本上的代码都提交了呀。
其实就是项目主模块记录的submodule中的提交50db78feb453236961657c9f2ff8c50ed0bbebaf
在服务器上的submodulecommon_source_cpp
中并不存在。
想到这里我明白原因了:
我在家里工作时主项目的代码push到了git server,但忘记将submodule common_source_cpp
也push到git server.
所以造成主项目中记录的submodule的HEAD超前,所以找不到指定的commit.
解决办法很简单:回头到笔记本上把submodulecommon_source_cpp
push一下
再执行 git submodule update
就正常了。
参考资料
[《What does the git error message “Server does not allow request for unadvertised object” mean?》][1]
[1]:https://superuser.com/questions/1240216/what-does-the-git-error-message-server-does-not-allow-request-for-unadvertised