从拉请求中复制 GitHub?

我想从 GitHub 克隆一个存储库。问题是我不想要主分支; 我想要 这个未经批准的请求中的版本。

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

94653 次浏览

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

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

您可以使用 -b选项和 pull 请求来克隆所需的分支:

git clone https://github.com/user_name/repo_name.git -b feature/pull_request_name dir_name

在您的示例中,要克隆的分支是 pull 请求(feature/mongoose-support)的源分支:

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

当用户提交请求时,他们要求将一些更改从他们的分支上的分支合并回另一个用户的存储库。

您需要的更改可以从请求的源获得。为此,克隆用户的存储库(git://github.com/berstend/frappe.git) ,然后检查他从中创建请求的分支(feature/mongoose-support)。

您可以按照 这个要点中的说明直接签出远程,而不必指出它们的存储库和分支。

示例用法

对于我的一个项目(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 上获取每个请求的头部,并将其映射到 github/pr/#。因此,如果有人发送了一个拉请求,并且它的编号为62(例如) ,你会这样做:

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

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

最简单的方法是这样的:

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

您现在将处于一个处于 pull 请求状态的新分支上。

您可能需要通过运行

git config --global alias.pr '!f() { git fetch -fu ${2:-origin} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f'

现在,您可以通过运行 git pr <pr_number>检出任何 PR,或者如果您的 github 远程没有命名为 origin,则检出 git pr <pr_number> <remote>

在安装 废物临时演员之后

(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]
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

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

我如何获取一个我不拥有的分支的未合并的 pull 请求?

对我来说,这很简单

git fetch origin pull/4/head

4就是在这里被发现的:

enter image description here

随着 Github 的官方新 命令行接口命令行接口:

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

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


请参阅附加的 详情及方案安装说明书

带“-b”选项的可接受答案对我不起作用,所以这就是我最终得到的答案。在 Github 中创建 pull request 之后,您将被带到这个页面,在这里您可以看到如下内容: ‘ ogryb’是我的用户名,‘ patch-1’是分配给它的自动生成的名称。

enter image description here

你现在需要做的就是点击右边突出显示的名字,它会带你进入一个页面,链接如下:

enter image description here

单击绿色“ Code”按钮的右侧,可以看到一个不错的个性化 git 链接,可用于克隆或添加对现有拉请求的更多更改。

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

将公共关系引导到您当前的分支使用:

git pull origin pull/418/head

这里是 pull/{no. of PR}/head

enter image description here