git refs/pull/... vs. pull/



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

git fetch upstream refs/pull/PR_ID/head:NEW_LOCAL_BRANCH

git fetch upstream pull/PR_ID/head:NEW_LOCAL_BRANCH

我的问题是,包含"refs";在地址中,不包括吗?
两个似乎都很好。

前缀refs/pull/是一个引用(或引用)命名空间发明-如果这个词不是太强-由GitHub用于他们的Pull Request功能。它不是一个标准的Git命名空间,Git在默认情况下会忽略refs/pull/命名空间中的名字。

正如matt提到的,如果你使用了一个缩写的ref(在任何地方,不只是在refspec中),Git会尽可能尝试用一个完整的ref来匹配它。进行这种匹配的精确规则取决于您在何处使用这种名称。通常的版本集在gitrevisions文档中有概述,但它谈论的是只存在于你自己的存储库中的本地参考;当你做git fetchgit push时,一些裁判不是本地的,这些规则会被弯曲一点。

包含"refs"在地址里,不包括它吗?

包含它会直接提供一个有效的引用。

不包含它意味着Git必须找出你的意思。它是通过尝试来实现的。它尝试的第一件事就是把refs/放在你说的话前面——天哪,这很有效。


(对于Git用来确定您的意思的完整过程的介绍,请参阅

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

查看指定修订项下的第三项。)

最新更新