我想检查之前创建的拉请求(通过GitHub web界面创建)。我搜索了一下,发现不同的地方有裁判/拉或裁判/拉/pr
但是当我添加fetch = +refs/pull/*/head:refs/remotes/origin/pr/*到git配置文件并进行git取回时
我哪里做错了?GitHub应该自动创建拉/xyz东西,还是我必须配置一些东西?
我想检查之前创建的拉请求(通过GitHub web界面创建)。我搜索了一下,发现不同的地方有裁判/拉或裁判/拉/pr
但是当我添加fetch = +refs/pull/*/head:refs/remotes/origin/pr/*到git配置文件并进行git取回时
我哪里做错了?GitHub应该自动创建拉/xyz东西,还是我必须配置一些东西?
当前回答
要获取远程PR到本地回购,
git fetch origin pull/$ID/head:$BRANCHNAME
其中$ID是拉请求ID, $BRANCHNAME是你想要创建的新分支的名称。一旦您创建了分支,那么简单
git checkout $BRANCHNAME
例如,让我们想象一下,你想从源主分支签出拉请求#2:
git fetch origin pull/2/head:MASTER
更多信息请参阅官方GitHub文档。
其他回答
虽然这个线程上的大多数答案都可以工作,但我更喜欢在新的分支中获取一个pull请求,并对旧的提交进行软重置(将PR更改移动到staging区域),这允许我测试以及查看我的IDE中的差异。
git fetch origin pull/<PR-id>/head:<BRANCH_NAME>
git checkout BRANCH_NAME
然后对旧的提交进行软重置(参见使用git log的提交列表)
git reset --soft <hash_of_old_commit>
e.g
git fetch origin pull/65/head:test-branch
git checkout test-branch
git log # press 'q' to exit
git reset --soft 7d7fe166cd878ed70c559c4e98faf2323532
运行上述命令将提取PR的更改,并将它们显示在您的IDE版本中,它们不会被提交,您可以在登台区域中看到差异(就像这些更改是在本地进行的一样)。
参考:Github文档参考
你可以使用git config命令来写一个新的规则到.git/config来从存储库中获取pull请求:
$ git config --local --add remote.origin.fetch '+refs/pull/*/head:refs/remotes/origin/pr/*'
然后就是:
$ git fetch origin
Fetching origin
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 2), reused 4 (delta 2), pack-reused 0
Unpacking objects: 100% (4/4), done.
From https://github.com/container-images/memcached
* [new ref] refs/pull/2/head -> origin/pr/2
* [new ref] refs/pull/3/head -> origin/pr/3
我正在使用hub,一个来自github的工具:https://github.com/github/hub
使用hub在本地检出一个pull请求有点容易:
hub checkout https://github.com/owner/repo/pull/1234
or
hub pr checkout 1234
这个要点描述了当你进行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'
假设你的起源和上游信息如下所示
$ 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>
应该做这项工作