2013-06-26 39 views
5

假设我本地位于我们有福的存储库的分支master上。有人发送了拉请求。在我的新本地提交之上重新申请一个GitHub拉取请求

如何在我的本地分支上应用提交请求的提交 - 就好像这些提交在我的分支上进行了重新分配 - 在单个命令中一样?

注意:拉请求已经过了几天,而且我的本地分支自创建拉请求以来有新的提交。

+0

我也问了[类似的问题在这里(http://stackoverflow.com/questions/17182624 /对github项目的贡献 - 如何重新绑定我的拉杆请求)这可能会帮助有同样问题的人 – fontno

回答

6

有关于这个问题的great blog post,从Igor Zevaka

首先必须获取隐藏的拉请求裁判,并将其放置在pr/NNN远程分支下:

git fetch origin refs/pull/1234/head:refs/remotes/pr/1234 

(由上拉代替1234请求编号)

之后,它只是一个经典的基准:检出拉请求,并在您的master分支上重新绑定它:

git checkout pr/1234 
git rebase master 

或可替代

git rebase master pr/1234 

当然,你可能会看到冲突。

现在,请求被重定位在master上,并且是当前分支。如果您想更新主刚刚合并拉请求(我们说--ff-only,因为我们知道这将是一个快进合并):

git checkout master 
git merge --ff-only pr/1234 

要有一个班轮需要一些shell别名,它只是

git pull --rebase origin pull/NNN/head 

其中:(看我对方的回答这是你想要的倒数)脚本:)

+0

1.当检测到pr_1234时,'git rebase master'将在'master'上重新映射'pr_1234'(参见http://git-scm.com/docs/git-rebase) – CharlesB

+0

2。因为我不确定是否可以按原样检出带斜杠的远程分支,并且原始博客文章以这种方式执行此操作 – CharlesB

+0

我已经离开git太久了!当然,在rebase之后,'master'仍然是pull请求的祖先...我更喜欢合并命令,即使结果相同,也更直观(我也提供了一个答案) – CharlesB

1

OK,这一个班轮将重订上拉请求顶部您提交的问题NNN是拉请求号码。假设origin是您本地回购的Github远程设备,并且master已签出。

Explanation here在道格拉斯斯图亚特的博客:Github存储其他货叉的请求,在origin回购仓库下,pull/NNN。这是允许在其上运行pull --rebase

+1

hah(/我删除了答案) - 我昨天没有在机器上验证这些工作。这会让“本地分支有新的提交”在pr提交之上 - 从问题来看,这还不是很清楚。 +1。 – AD7six

+1

是的,我不认为这是OP的要求,但它是一个聪明的答案。 – jszakmeister

+0

确实是我想要的反面,但有趣的一面注意没有那么少:) –

0

安装hub

# directly apply all commits from a pull request to the current branch 
$ git am -3 https://github.com/github/hub/pull/134 

TODO:需要弄清楚如何强制--rebase

相关问题