我怎样才能获取一个我没有拥有的分支的未合并的拉取请求?

我需要在NServiceBus回购中引入特定的拉取请求(尚未处理到主stream中):

https://github.com/johnsimons/NServiceBus/commit/d8524d53094e8181716e771c1023e968132abc15

这显然不是我的回购,但我需要在该请求中存在的变化。

做这个的最好方式是什么?

要抓取您的存储库:

git fetch git@github.com:jboss/jboss-common-beans.git refs/pull/4/head 

然后用FETCH_HEAD做任何你想做的事情:

 git checkout -b new-branch FETCH_HEAD 
 git pull origin pull/28/head 

要么

 git fetch origin pull/28/head:28 git checkout 28 

我可以拉一个尚未合并的拉请求?

你可以这样做:

1)添加上行远程:

 git remote add upstream git@github.com:Particular/NServiceBus.git 

2)之后,您可以检查任何拉的请求到一个新的分支每个ID:

 git fetch upstream pull/PULL_REQUEST_ID/head:NEW_BRANCH_NAME 

请参阅GitHub的帮助文章: https : //help.github.com/articles/checking-out-pull-requests-locally

对于困难的情况(特别是如果你没有签出git-repo),我认为最简单的方法是应用补丁。 为此,只需在github上打开pull-request,然后在URL中添加一个“.patch”,下载并应用补丁。

例:

 cd cordova-plugin-media wget https://github.com/apache/cordova-plugin-media/pull/120.patch patch -p1 < 120.patch 

github上/集线器

https://github.com/github/hub是一个GitHub CLI助手,使用来自GitHub API的额外信息来处理这个和其他用例。 例如:

 git clone https://github.com/github/hub # Just copy paste the URL. hub checkout https://github.com/github/hub/pull/970 

结果:

  • 我们现在位于名为<USERID>-<BRANCH_NAME>的分支中,其中包含PR。

    注意为我们自动设置好的分支名称。

  • 该分支设置为跟踪叉上的原始分支,即.git/config包含:

     [branch "<USERID>-<BRANCH_NAME>"] remote = retronym merge = refs/heads/ticket/969 rebase = true 

    所以如果进一步的提交被推送,我们可以git fetch直接git fetch它们。

在Linux上安装hub目前是一个痛苦,如果你不熟悉Go,但值得。 在Ubuntu 14.04上,存储库上的Go太旧了,所以GVM是最好的select:

 bash < <(curl -LSs 'https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer') . "$HOME/.gvm/scripts/gvm" gvm install 'go1.4' gvm use 'go1.4' --default go get github.com/github/hub 

我还要求GitHub给我们一个复制粘贴cheatsheet在Web UI上: https : //github.com/isaacs/github/issues/449

下面是让你的'git fetch'命令来获取所有拉请求时运行“git fetch”

添加到〜/ .gitconfig中

 [remote "origin"] fetch = +refs/pull-requests/*/from:refs/remotes/origin/pr/* 

注意引用“refs / pull-requests /”具有隐藏命名约定,对于git集线器,您可能需要不同的格式

一旦您将上游回购添加为上游远程(就像@elias指出的那样):

 $ git remote add upstream git@github.com:Particular/NServiceBus 

您可以configurationgit来默认提取拉取请求:

 $ git config --local --add remote.upstream.fetch '+refs/pull/*/head:refs/remotes/upstream/pr/*' 

那么,让我们来看看它:

 $ git fetch upstream Fetching upstream 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/Particular/NServiceBus * [new ref] refs/pull/1/head -> upstream/pr/1 * [new ref] refs/pull/2/head -> upstream/pr/2 

并检查出来:

 $ git checkout pr/2 Branch pr/2 set up to track remote branch pr/2 from upstream. Switched to a new branch 'pr/2'