来自pull请求的GitHub克隆?

时间:2013-02-19 00:27:29

标签: git github pull-request

我想从GitHub克隆一个存储库。问题是我不想要主分支;我想要this unapproved pull request中的版本。

我可以克隆拉取请求版本而不是主存储库吗?

12 个答案:

答案 0 :(得分:86)

最简单的方法就是这样:

git fetch origin pull/2/head
git checkout -b pullrequest FETCH_HEAD

现在,您将进入处于拉取请求状态的新分支。

答案 1 :(得分:71)

您可以使用-b命令中的git clone选项克隆所需的分支。

在您的情况下,您要克隆的分支是拉取请求的源分支(feature / mongoose-support):

git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone

答案 2 :(得分:31)

git fetch origin refs/pull/PR_NUMBER/head:NEW_LOCAL_BRANCH

例如:

$ git fetch origin pull/611/head:pull_611
$ git checkout pull_611

在GitHub上进行更改,提交,推送和打开新的PR

答案 3 :(得分:16)

您可以按照this gist中的说明直接查看遥控器,而无需弄清楚他们的存储库和分支。

使用示例

对于我的一个项目(github3.py),我在github3.py/.git/config

中有以下内容
[remote "github"]
    fetch = +refs/heads/*:refs/remotes/github/*
    fetch = +refs/pull/*/head:refs/remotes/github/pr/*
    url = git@github.com:sigmavirus24/github3.py

第一行是每个遥控器的标准线,但github被遥控器的名称替换。这意味着远程磁头(或该服务器上的分支头)被“映射”到以github/为前缀的本地远程控制器。所以,如果我做了git fetch github并且在GitHub上有一个分支机构,我的机器上已经没有注意到了它,它会下载分支机构,我可以像这样切换到它:git checkout -t github/branch_name

第二行做同样的事情,但它是为拉请求而不是标准的git分支做的。这就是你看refs/pull/*/head的原因。它在GitHub上获取每个pull请求的头部并将其映射到github/pr/#。那么如果有人发送拉取请求并且编号为62(例如),则可以执行以下操作:

git fetch github
git checkout -t github/pr/62

然后你会在一个名为pr/62的本地分支上(假设它还不存在)。这很好,意味着你不必跟踪其他人的遥控器或分支机构。

答案 4 :(得分:5)

当用户提交拉取请求时,他们要求将某些更改从其克隆的分支合并到另一个用户的存储库。

您可以从拉取请求的来源获取所需的更改。要执行此操作,请克隆用户的存储库(git://github.com/berstend/frappe.git),然后从(feature/mongoose-support)签出他创建拉取请求的分支。

答案 5 :(得分:4)

使用Github的官方新command line interface

gh repo clone org/repo
cd repo
gh pr checkout 44

其中44是PR号,但也可以是分支名称。


另见details and optionsinstallation instructions

答案 6 :(得分:3)

git clone git://github.com/dweldon/frappe
cd frappe
git pull origin pull/2/head

How can I fetch an unmerged pull request for a branch I don't own?

答案 7 :(得分:2)

安装git-extras

(cd /tmp && git clone --depth 1 https://github.com/tj/git-extras.git && cd git-extras && sudo make install)

您只需使用git pr

即可
$ git pr 62 [remote]

答案 8 :(得分:1)

对我来说,这很简单

import re

line = 't͟e͟x͟t͟͟'.encode("utf-8")
underline = b'\xcd\x9f'

print(re.sub(underline, b'', line))


line = 't͟e͟x͟t͟͟'
underline = b'\xcd\x9f'.decode('utf-8')

print(re.sub(underline, '', line))

在这里找到git fetch origin pull/4/head 的地方:

enter image description here

答案 9 :(得分:0)

该pull请求显示来自该人的分支的提交,因此您可以看到他正在从feature/mongoose-support分支推送他的更改。

您可以克隆他的存储库并签出该分支

答案 10 :(得分:0)

接受的带有“ -b”选项的答案对我不起作用,所以这就是我的最终选择。在Github中创建请求请求后,您将转到页面,如下所示,其中“ ogryb”是我的用户名,“ patch-1”是为其自动分配的名称。

enter image description here

您现在要做的就是单击右侧突出显示的名称,这将带您进入带有以下链接的页面:

enter image description here

点击绿色的“代码”按钮右侧,以查看漂亮的个性化git链接,该链接可用于克隆或向现有的请求请求添加更多更改。

答案 11 :(得分:0)

用于列出和获取 PR 的 BitBucket 约定:

git ls-remote origin 'refs/pull-requests/*'
git fetch origin refs/pull-requests/998/from:local-branch-name

全文在此:https://www.atlassian.com/git/articles/pull-request-proficiency-fetching-abilities-unlocked