如何将未合并的上游拉请求从其他叉子应用到我的叉?
在GitHub上的一个项目,我有一个新的拉请求,我想拉到我的叉,作者还没有拉入。
有没有一种简单的方法来将其他叉的拉请求应用到我的叉? 这里还有别的东西,我错过了吗?
你可以很容易地手动完成:
-
添加另一个叉作为您的回购远程:
git remote add otherfork git://github.com/request-author/project.git
-
取回他的回购承诺
git fetch otherfork
-
然后你有两个选项来应用拉取请求(如果你不想select1)
-
如果您不关心也应用在源和拉请求之间添加的最终提交,则可以重新绑定形成拉请求的分支
git rebase master otherfork/pullrequest-branch
-
如果您只希望提交请求中的提交,请确定其SHA1并执行
git cherry-pick <first-SHA1> <second-SHA1> <etc.>
-
更新:通过网页
你也可以通过github网页来做到这一点。
我假设,你应该已经有一个共同的回购( BaseRepo
)的fork( MyFork
),它有一个你感兴趣的fork( OtherFork
)的挂起请求。
- 导航到fork(
OtherFork
),它已经发起了你希望进入你的fork(MyFork
)的请求, - 转到
OtherFork
的pull requests页面 - 点击新的拉取请求
- 应该提供待处理的请求。 记得要select合适的
OtherFork
分支。 select左侧作为基叉叉(MyFork
)( 重要 )。 - 现在,
View pull request
的选项应该更改为Create pull request
。 点击这个。
现在你应该在fork( MyFork
)中有一个挂起的请求,你可以简单地接受。
就像之前Tekkub所说的,你可以直接把分支拉进去。 大部分时间在GitHub上,分支只是在请求用户的项目分支上“主”。
例如: git pull https://github.com/USER/PROJECT/ BRANCH
一些更详细的信息,为我工作。
分叉回购的.git / config文件如下所示:
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = false [remote "origin"] url = git@github.com:litzinger/angular-carousel.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master rebase = true [remote "source"] url = git://github.com/revolunet/angular-carousel.git fetch = +refs/heads/*:refs/remotes/source/* fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
然后运行“git fetch source”,然后列出所有来自分叉回购的请求。
* [new ref] refs/pull/54/head -> origin/pr/54 * [new ref] refs/pull/67/head -> origin/pr/67 * [new ref] refs/pull/69/head -> origin/pr/69 * [new ref] refs/pull/71/head -> origin/pr/71
然后在特定的pull request中合并运行“git merge master origin / pr / 67”
我会做什么是以下;
git checkout master git remote add #NAME# #ADDRESS TO REPO# git fetch #USERNAME# git checkout -b test_fork git rebase #NAME#/#BRANCH#
我现在已经将这些更改合并到一个名为test_fork
的testing分支中。 所以任何改变都不会弄脏我的树。
可选地,如果这是更优选的,则可以使用如上所述的樱桃挑选来挑选特定的提交。
旅途愉快 :)
对项目的拉取请求可能来自许多不同的作者(叉),并且你可能不需要为每个叉分开一个单独的远程。 另外,您不希望对作者在提交请求时使用的分支或作者主分支中的其他分支作出任何假设。 因此,最好引用拉取请求,因为它出现在上游存储库中,而不是出现在其他分支中。
步骤1:
git remote add upstream <url>
您可能已经完成了这一步,但是如果没有,您需要为上游项目定义一个远程。 该URL是您分叉的项目的克隆URL。 更多信息在configuration远程叉和同步叉 。 upstream
是你给遥控器的名字,虽然它可以是任何东西, upstream
是传统的名字。
第2步:
git pull upstream refs/pull/{id}/head
…其中{id}
是拉取请求编号。 upstream
是要从中拉出的遥控器的名称,即,如果完全按照步骤1进行操作,则只是“上游”。 它也可以是一个URL,在这种情况下你可以跳过第一步。
第3步:
input合并提交的提交消息。 您可以保留默认值,尽pipe我build议给出一个很好的单行摘要,其中包含拉取请求编号,修复的问题和简短描述:
Merge PR#42, fixing VIM-652, support for mapping arbitrary IDEA actions