GitHub上的一个项目,我有一个fork,它有一个新的pull请求,我想把它拉到我的fork中,但作者还没有拉进去。
有一个简单的方法来应用从其他叉子的拉请求到我的叉子?这里还有什么我没注意到的吗?
GitHub上的一个项目,我有一个fork,它有一个新的pull请求,我想把它拉到我的fork中,但作者还没有拉进去。
有一个简单的方法来应用从其他叉子的拉请求到我的叉子?这里还有什么我没注意到的吗?
当前回答
我会这样做;
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来选择特定的提交。
快乐旅行:)
其他回答
为此,我使用了一个方便的脚本。我运行脚本输入:
git prfetch upstream
它从上游fork获得所有的pull请求。
要创建脚本,创建一个文件~/bin/git-prfetch。
该文件应包含以下内容:
#!/bin/bash
if [ -z "$1" ]; then
echo "Please supply the name of a remote to get pull requests from."
exit 1
fi
git fetch $1 +refs/heads/\*:refs/remotes/$1/\* +refs/pull/\*/head:refs/remotes/$1/pr/\*
通过设置,确保你的路径包含脚本:
export PATH="$HOME/bin:$PATH"
您可以将该文件添加到~/。Bashrc使这一变化永久化。
现在,确保你添加了你想要获得pull请求的fork:
git remote add upstream https://github.com/user/repo.git
然后
git prfetch upstream
你可以很容易地手动完成:
add the other fork as a remote of your repo: git remote add otherfork git://github.com/request-author/project.git fetch his repo's commits git fetch otherfork You have then two options to apply the pull request (if you don't want to choose pick 1.) If you don't care about applying also the eventual commits that have been added between the origin and the pull request, you can just rebase the branch on which the pull request was formed git rebase master otherfork/pullrequest-branch If you only want the commits in the pull request, identify their SHA1 and do git cherry-pick <first-SHA1> <second-SHA1> <etc.>
项目的Pull请求可能来自许多不同的作者(fork),您可能不希望每个fork都有一个单独的远程服务器。此外,您不希望对作者在提交pull请求时使用的分支做出任何假设,也不希望对作者的主分支中可能存在的其他内容做出任何假设。因此,最好在上游存储库中引用拉请求,而不是在其他分支中引用它。
步骤1:
git remote add upstream <url>
您可能已经完成了这一步,但如果没有,您将需要为上游项目定义一个远程。URL是你分叉的项目的克隆URL。更多信息请参见配置一个fork的远程和同步一个fork。Upstream是为远程提供的名称,虽然它可以是任何名称,但Upstream是常规名称。
步骤2:
git pull upstream refs/pull/{id}/head
... 其中{id}是拉请求号。Upstream是要拉动的遥控器的名称,也就是说,如果您完全按照第1步进行操作,则仅为“Upstream”。它也可以是一个URL,在这种情况下,您可以跳过步骤1。
步骤3:
输入合并提交的提交消息。你可以保持默认值,尽管我建议给出一个漂亮的一行摘要,包括拉请求号,它修复的问题,以及一个简短的描述:
Merge PR#42, fixing VIM-652, support for mapping arbitrary IDEA actions
更新:网页
你也可以通过github网页做到这一点。
我假设,您应该已经有一个通用回购(BaseRepo)的fork (MyFork),它有来自您感兴趣的fork (OtherFork)的未决拉请求。
导航到fork (OtherFork),它已经启动了你想要进入你的fork (MyFork)的拉请求 进入OtherFork的pull requests页面 点击新的拉请求 应该提供挂起的拉请求。记住要选择合适的OtherFork分支。选择左边作为基础叉你的叉(MyFork)(重要)。 现在查看拉请求的选项应该更改为创建拉请求。点击这个。
现在你的fork (MyFork)中应该有一个未决的拉请求,你可以简单地接受它。
我会这样做;
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来选择特定的提交。
快乐旅行:)