代码之家  ›  专栏  ›  技术社区  ›  Kit Sunde

为什么git fetch origin<hash>会给出非零但不是错误消息?

git
  •  0
  • Kit Sunde  · 技术社区  · 8 年前

    发生了这样的事情:

    $ 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。没有迹象表明出了什么问题,这里的实际问题是什么?

    1 回复  |  直到 8 年前
        1
  •  2
  •   ElpieKay    8 年前

    正如书中所说 git-config :

    上传包。允许Ipsha1inwant

    上载包时。hideRefs生效,允许上载包接受 在隐藏引用的顶端请求对象的fetch请求(通过 默认情况下,这样的请求被拒绝)。另请参见uploadpack。隐藏。 即使这是错误的,客户端也可以通过 gitnamespaces的“安全性”部分中描述的技术【7】 手册页;最好将私有数据保存在单独的存储库中。

    上传包。Allowareachablesha1inwant

    允许upload pack接受请求对象的提取请求 可从任何参考提示获取。但是,请注意 对象可达性在计算上很昂贵。默认为false。 即使这是错误的,客户端也可以通过 gitnamespaces的“安全性”部分中描述的技术【7】 手册页;最好将私有数据保存在单独的存储库中。

    上传包。allowAnySHA1InWant公司

    允许upload pack接受请求任何对象的提取请求 完全默认为false。

    如果希望在不使用任何ref的情况下获取特定提交,则应在远程存储库的配置中将这些变量中的一个或多个设置为true。否则,远程存储库将拒绝提取请求。

    默认情况下,它们为false,并且大多数服务器端存储库都不会将它们设置为true,因为存在安全问题,并且在没有引用的情况下查找提交需要额外的成本 git fetch origin 883c5186f0a17190453bfda1bcf1716e7f5fc8e2 失败,因为服务器拒绝特定提交的提取请求。跑步后 git fetch origin staging ,提交和相关对象将被下载并存在于本地存储库中,因此 git获取源代码883c5186f0a17190453bfda1bcf1716e7f5fc8e2 不必从远程存储库获取它们,而且它不返回错误也是合理的。