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

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

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


当前回答

创建本地分支

git checkout -b local-branch-name

拉遥控器PR

git pull git@github.com:your-repo-ssh.git remote-branch-name

其他回答

在更新版本的Git中:

Git fetch origin refs/pull-requests/<id>/from:<localbranchname>

这个要点描述了当你进行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'

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

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

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

git checkout $BRANCHNAME

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

git fetch origin pull/2/head:MASTER

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

对于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

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

有一种使用git-cli的简单方法

gh pr checkout {<number> | <url> | <branch>}

参考:https://cli.github.com/manual/gh_pr_checkout