GitHub上的一个项目,我有一个新的拉动请求,我想要进入我的分支,作者还没有进入。
有没有一种简单的方法将其他叉子的拉请求应用到我的叉子?这里还有别的东西我不见了吗?
你可以很容易地手动完成:
git remote add otherfork git://github.com/request-author/project.git
git fetch otherfork
git rebase master otherfork/pullrequest-branch
如果您只想要拉取请求中的提交,请确定它们的SHA1并执行
git cherry-pick <first-SHA1> <second-SHA1> <etc.>
您也可以通过github网页完成此操作。
我假设你应该已经有一个普通仓库(MyFork
)的叉子(BaseRepo
),它有你感兴趣的叉子(OtherFork
)的待处理拉动请求。
OtherFork
),您希望进入您的fork(MyFork
)OtherFork
的pull请求页面OtherFork
分支。选择左侧作为基叉叉(MyFork
)(重要)。View pull request
的选项应该改为Create pull request
。点击这个。现在你应该在你的fork(MyFork
)中有一个挂起的pull请求,你可以接受。
就像Tekkub先前所说的那样,你可以直接拉入分支。大部分时间使用GitHub,分支在请求用户的项目分支上只是“主”。
示例:git pull https://github.com/USER/PROJECT/ BRANCH
一些更详细的信息对我有用。
forked repo的.git / config文件如下所示:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = false
[remote "origin"]
url = [email protected]: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”,然后列出forked repo中的所有pull请求。
* [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
然后在特定的拉取请求中合并运行“git merge master origin / pr / 67”
对项目的拉取请求可能来自许多不同的作者(分叉),并且您可能不希望每个分支都有单独的远程。此外,您不希望对提交拉取请求时作者使用的分支做出任何假设,或者作者的主分支中可能还有其他内容。因此最好引用上游存储库中出现的pull请求,而不是它在其他分支中出现的那样。
步骤1:
git remote add upstream <url>
您可能已经完成了这一步,但如果没有,您将需要为上游项目定义一个远程。 URL是您分叉的项目的克隆URL。更多信息,请访问Configuring a remote for a fork和Syncing a fork。 upstream
是你给遥控器的名字,虽然它可以是任何东西,upstream
是传统的名字。
第2步:
git pull upstream refs/pull/{id}/head
...其中{id}
是拉取请求编号。 upstream
是要从中拉出的遥控器的名称,即如果您完全按照步骤1进行“上游”。它也可以是一个URL,在这种情况下,您可以跳过第1步。
第3步:
键入合并提交的提交消息。您可以保留默认值,但我建议您提供一个很好的单行摘要,其中包含拉取请求编号,修复的问题以及简短说明:
Merge PR#42, fixing VIM-652, support for mapping arbitrary IDEA actions
我要做的是以下几点;
git checkout master
git remote add #NAME# #ADDRESS TO REPO#
git fetch #USERNAME#
git checkout -b test_fork
git rebase #NAME#/#BRANCH#
我现在已将更改合并到一个名为test_fork
的测试分支中。所以任何改变都不会弄脏我的树。
如果更可取,您可以选择使用如上所述的cherry-pick来选择特定的提交。
旅途愉快 :)