发生了这种情况:
$ git fetch origin 883c5186f0a17190453bfda1bcf1716e7f5fc8e2 && echo "everything is fine"
$ git fetch origin 883c5186f0a17190453bfda1bcf1716e7f5sdfsd
fatal: Couldn't find remote ref 883c5186f0a17190453bfda1bcf1716e7f5sdfsd
然后我尝试了一个分支git fetch origin staging
,然后git fetch origin 883c5186f0a17190453bfda1bcf1716e7f5fc8e2
将返回0.没有迹象表明出了什么问题,这里的实际问题是什么?
答案 0 :(得分:2)
正如git-config中所述:
<强> uploadpack.allowTipSHA1InWant 强>
当uploadpack.hideRefs生效时,允许upload-pack接受 获取请求在隐藏引用的尖端请求对象(通过 默认情况下,这样的请求被拒绝)。另请参见uploadpack.hideRefs。 即使这是错误的,客户也许可以通过网站窃取对象 gitnamespaces [7]的“SECURITY”部分描述的技术 手册页;最好将私有数据保存在一个单独的存储库中。
<强> uploadpack.allowReachableSHA1InWant 强>
允许upload-pack接受请求对象的获取请求 可以从任何参考提示到达。但是,请注意计算 对象可达性在计算上是昂贵的。默认为false。 即使这是错误的,客户也许可以通过网站窃取对象 gitnamespaces [7]的“SECURITY”部分描述的技术 手册页;最好将私有数据保存在一个单独的存储库中。
<强> uploadpack.allowAnySHA1InWant 强>
允许upload-pack接受请求任何对象的获取请求 一点都不默认为false。
如果您想在不使用任何引用的情况下获取特定提交,则应在远程存储库的配置中将这些变量中的一个或多个设置为true。否则,远程存储库将拒绝获取请求。
默认情况下它们是假的,并且大多数服务器端存储库都没有将它们设置为true,因为存在安全问题以及在没有ref的情况下查找提交的额外成本。因此,git fetch origin 883c5186f0a17190453bfda1bcf1716e7f5fc8e2
失败,因为服务器拒绝特定提交的获取请求。运行git fetch origin staging
后,提交和相关对象将被下载并存在于本地存储库中,因此以下git fetch origin 883c5186f0a17190453bfda1bcf1716e7f5fc8e2
不必从远程存储库获取它们,并且它不会返回任何错误是合理的