如何在git中合并其他人项目的拉取请求?

Dis*_*oat 53 git github pull-request

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

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

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

编辑:要清楚,这不是我的存储库.我正在使用derobins的WMD编辑器,但它有一些错误,这些错误是那些拉动请求声称修复的.我已经克隆了Ubuntu上的repo(不是在github中)并且希望在可能的情况下合并这些更改.

Mar*_*air 55

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

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

git remote add helpful git://github.com/helpful-person/whatever.git
Run Code Online (Sandbox Code Playgroud)

...然后将他们的更改提取到远程跟踪分支:

git fetch helpful
Run Code Online (Sandbox Code Playgroud)

...现在,您可以在上游存储库的克隆中获得该人的GitHub存储库的所有提交.如果您查看该拉取请求中的其他提交,您可以:

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

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

  • @PartlyCloudy:嗯,你可以这样做:`git pull git://github.com/helpful-person/whatever.git [提交请求的提交请求] (3认同)

And*_*sne 30

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

git pull https://github.com/otheruser/repo.git branchname
Run Code Online (Sandbox Code Playgroud)

例如,在撰写本文时,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
Run Code Online (Sandbox Code Playgroud)

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

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

  • @DaniëlW.Crompton最可能的原因是git存储库URL不正确. (2认同)