我想检查之前创建的拉请求(通过GitHub web界面创建)。我搜索了一下,发现不同的地方有裁判/拉或裁判/拉/pr

但是当我添加fetch = +refs/pull/*/head:refs/remotes/origin/pr/*到git配置文件并进行git取回时

我哪里做错了?GitHub应该自动创建拉/xyz东西,还是我必须配置一些东西?


当前回答

签出PR并查看与VSCode中的主分支相比PR的所有更改。类似文件更改部分Github的PR页面。

checkout PR(100)在“分离HEAD”状态 git fetch origin pull/100/head && git checkout FETCH_HEAD 显示为未提交的更改 Git重置主机 切换回主分支并执行这些更改 Git开关-

其他回答

这个要点描述了当你进行git取回时发生了什么:

显然,改变github的url,以匹配你的项目的url。结果是这样的:

[remote "origin"]
    url = git@github.com:joyent/node.git
    fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
    fetch = +refs/heads/*:refs/remotes/origin/*

请注意fetch refspecs的顺序,正如crashneb在他自己的回答中所建议的那样。

如果不是,意思是如果你没有正确的顺序,因为:

Git添加remote.origin.fetch "+refs/pull/*/head:refs/remotes/origin/pr/*"… 然后信任pr -checkout自然地设置了新的本地分支,使用类似git开关pr/1的东西——然后你可能会遇到麻烦,如果pr更新了,你想要git再次拉它。 branch.pr / 1。合并配置值不正确。


现在获取所有的pull请求: $ git获取原点 从github.com: joyent /节点 * [new ref] refs/pull/1000/head -> origin/pr/1000 * [new ref] refs/pull/1002/head -> origin/pr/1002 *[新ref] refs/pull/1004/head -> origin/pr/1004 *[新ref] refs/pull/1009/head -> origin/pr/1009 ... 检查一个特定的拉请求: $ git结账pr/999 分支pr/999设置跟踪远程分支pr/999从原点。 切换到新的分支“pr/999”

问题259中列出了各种脚本来自动化该任务。 git-extras项目提出了git-pr命令(在PR 262中实现)

git-pr(1)——在本地检出一个pull请求

SYNOPSIS git-pr <number> [<remote>] git-pr clean DESCRIPTION Creates a local branch based on a GitHub pull request number, and switch to that branch afterwards. The name of the remote to fetch from. Defaults to origin. EXAMPLES This checks out the pull request 226 from origin: $ git pr 226 remote: Counting objects: 12, done. remote: Compressing objects: 100% (9/9), done. remote: Total 12 (delta 3), reused 9 (delta 3) Unpacking objects: 100% (12/12), done. From https://github.com/visionmedia/git-extras * [new ref] refs/pull/226/head -> pr/226 Switched to branch 'pr/226'

Github最近发布了一个名为Github -cli的cli实用程序。在安装它之后,你可以使用它的id (doc)在本地签出一个拉请求的分支。

例:gh pr checkout 2267

这也适用于fork,但如果你需要回推到fork,你需要添加远程存储库并使用传统的git推送(直到这个票据在gh实用程序中实现)

对于Bitbucket,你需要将pull替换为pull-requests。

首先,你可以通过git ls-remote origin命令确认pull request URL样式。

$ git ls-remote origin |grep pull
f3f40f2ca9509368c959b0b13729dc0ae2fbf2ae    refs/pull-requests/1503/from
da4666bd91eabcc6f2c214e0bbd99d543d94767e    refs/pull-requests/1503/merge
...

正如你所看到的,它是refs/pull-requests/1503/from而不是refs/pull/1503/from

然后你可以使用任何答案的命令。

要获取远程PR到本地回购,

git fetch origin pull/$ID/head:$BRANCHNAME

其中$ID是拉请求ID, $BRANCHNAME是你想要创建的新分支的名称。一旦您创建了分支,那么简单

git checkout $BRANCHNAME

例如,让我们想象一下,你想从源主分支签出拉请求#2:

git fetch origin pull/2/head:MASTER

更多信息请参阅官方GitHub文档。

假设你的起源和上游信息如下所示

   $ git remote -v
   origin  git@github.com:<yourname>/<repo_name>.git (fetch)
   origin  git@github.com:<yourname>/<repo_name>.git (push)
   upstream   git@github.com:<repo_owner>/<repo_name>.git (fetch)
   upstream   git@github.com:<repo_owner>/<repo_name>.git (push)

分行的名字是

   <repo_owner>:<BranchName>

then

   git pull origin <BranchName>

应该做这项工作