git refs/pull/... 与 pull/

Dan*_*arb 2 git github git-refspec

在不同的地方,寻找有关如何从 GitHub Pull Request 创建本地分支的说明,我看到了两个版本:

git fetch upstream refs/pull/PR_ID/head:NEW_LOCAL_BRANCH
Run Code Online (Sandbox Code Playgroud)

git fetch upstream pull/PR_ID/head:NEW_LOCAL_BRANCH
Run Code Online (Sandbox Code Playgroud)

我的问题是,地址中包含“”和包含“”有什么区别?refs
两者似乎都工作正常。

mat*_*att 6

\n

地址中包含“refs”与不包含“refs”有什么区别?

\n
\n

包含它可以直接提供有效的参考。

\n

不包括它意味着 Git 必须弄清楚你的意思。它通过尝试来做到这一点。它尝试的第一件事就是放在refs/你所说的 \xe2\x80\x94 前面,天哪,这有效。

\n
\n

(有关 Git 用于理解您的意思的完整过程的叙述,请参阅

\n

https://git-scm.com/docs/gitrevisions

\n

请参阅“指定修订”下的第三个条目。)

\n


tor*_*rek 6

前缀refs/pull/是 GitHub 发明的 ref(或引用)命名空间\xe2\x80\x94(如果该词不太强\xe2\x80\x94),无法用于其拉取请求功能。它不是标准的 Git 命名空间,Git 默认情况下在获取时会忽略命名空间中的refs/pull/名称。

\n

正如matt 所指出的,如果您使用缩写引用(任何地方,而不仅仅是在引用规范中),Git 将尝试将其与完整引用(如果可能)进行匹配。进行此匹配的精确规则取决于您在何处使用此类名称。gitrevisions 文档中概述了常用的集合,但它谈论的是仅存在于您自己的存储库中的本地引用;当您执行git fetch或时git push,某些参考不是本地的,并且这些规则会稍微弯曲。

\n