如何在git中将别人的项目中的pull请求合并?

我在电脑上克隆了这个回购: https : //github.com/derobins/wmd.git

虽然有一些错误,它看起来像另一个用户已经修复它们,并发出“拉请求”(我假设这些是他们的变化的要求提交?)

是否可以将这些更改合并到本地版本中?

编辑:只是要清楚,这不是我的存储库。 我正在使用来自derobins的WMD编辑器,但它有一些错误,这些pull请求旨在解决。 我已经克隆了Ubuntu上的回购(不在github上),并希望在可能的情况下合并这些更改。

(GitHub有关于如何处理pull请求的非常详尽的文档 。)

从本质上讲,您将需要为提出请求的人的存储库添加一个远程,例如:

git remote add helpful git://github.com/helpful-person/whatever.git 

…然后将其更改提取到远程跟踪分支中:

 git fetch helpful 

…所以现在你已经在你的上游仓库的克隆中拥有了那个人的GitHub仓库的所有提交。 如果您查看该请求中的其他提交,您可以:

  1. 合并最新的一个,例如git merge 75708aeab5
  2. 樱桃挑选每一个变化,例如git cherry-pick 2142db89git cherry-pick 75708aeab5
  3. 创build一个本地分支来进一步处理它们,例如git checkout -b fix-for-issue3 75708aeab5
  4. 等等

另外一种方法就是将提出请求的贡献者的存储库克隆一下,如果这样做对于那些修补程序是一样的话。

接受的答案build议克隆或添加远程的提出请求的人的存储库。 另一个更清洁和更简单的方法是使用这个命令

 git pull https://github.com/otheruser/repo.git branchname 

例如,在撰写本文时, ghi有三个尚未合并的开放请求。 这是我做的合并到我的本地回购。

 # I want to make sure my master is in sync with the upstream master git checkout -b merge-patches master # first pull request git pull --no-ff https://github.com/TiddoLangerak/ghi.git master # second pull request git pull --no-ff https://github.com/wayfare/ghi.git master 

请注意,这两个pull请求都是从master发送的,这就是为什么我从master分支中提取的原因。

这样,其他存储库不会被添加到您的遥控器,也不必樱桃挑选或克隆在本地。

你克隆回购你的github帐户。 然后,只需访问克隆的repo的forkqueue,然后select要合并到存储库中的修补程序。