54

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

但是它有几个错误,看起来另一个用户已经修复了它们并发出了“拉取请求”(我假设这些是提交更改的请求?)

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

编辑:为了清楚起见,这不是我的存储库。我正在使用 derobins 的 WMD 编辑器,但它有几个错误,这些请求请求声称要修复。我已经在 Ubuntu(不在 github)上克隆了 repo,并希望尽可能合并这些更改。

4

3 回答 3

57

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

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

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. 创建一个本地分支以进一步处理它们,例如git checkout -b fix-for-issue3 75708aeab5
  4. 等等等等

另一种方法是只克隆提出拉取请求的贡献者的存储库,如果那是相同的,但对于那些修复。

于 2011-04-05T14:20:00.770 回答
33

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

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

请注意,这两个拉取请求都是从 master 发送的,这就是我从他们的master分支中拉取的原因。

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

于 2013-10-28T11:01:37.110 回答
-2

您将 repo 克隆到您的 github 帐户。然后只需访问克隆存储库的 forkqueue 并选择要合并到存储库中的补丁。

于 2011-04-05T14:15:33.560 回答