从请求GitHub克隆?

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

我有可能克隆拉请求版本,而不是主存储库?

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

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

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

最简单的方法是这样的:

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

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

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

例如:

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

进行更改,提交它们,从GitHub上的fork中打开新的PR

您可以按照这个要点的方向,直接检查远程,而不必找出他们的存储库和分支。

用法示例

对于我的一个项目(github3.py),我在github3.py/.git/config有以下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被远程的名字所替代。 这意味着远程主pipe(或该服务器上分支机构的负责人)被“映射”到以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的本地分支(假设它不存在)。 这很好,意味着你不必跟踪其他人的遥控器或分支机构。

当用户提交一个pull请求时,他们要求将一个分支的克隆从一个分支合并到另一个用户的仓库。

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

在安装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] 

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

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

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

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