假设我本地位于我们有福的存储库的分支master
上。有人发送了拉请求。在我的新本地提交之上重新申请一个GitHub拉取请求
如何在我的本地分支上应用提交请求的提交 - 就好像这些提交在我的分支上进行了重新分配 - 在单个命令中一样?
注意:拉请求已经过了几天,而且我的本地分支自创建拉请求以来有新的提交。
假设我本地位于我们有福的存储库的分支master
上。有人发送了拉请求。在我的新本地提交之上重新申请一个GitHub拉取请求
如何在我的本地分支上应用提交请求的提交 - 就好像这些提交在我的分支上进行了重新分配 - 在单个命令中一样?
注意:拉请求已经过了几天,而且我的本地分支自创建拉请求以来有新的提交。
有关于这个问题的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
其中:(看我对方的回答这是你想要的倒数)脚本:)
OK,这一个班轮将重订上拉请求顶部您提交的问题NNN
是拉请求号码。假设origin
是您本地回购的Github远程设备,并且master
已签出。
Explanation here在道格拉斯斯图亚特的博客:Github存储其他货叉的请求,在origin
回购仓库下,pull/NNN
。这是允许在其上运行pull --rebase
。
hah(/我删除了答案) - 我昨天没有在机器上验证这些工作。这会让“本地分支有新的提交”在pr提交之上 - 从问题来看,这还不是很清楚。 +1。 – AD7six
是的,我不认为这是OP的要求,但它是一个聪明的答案。 – jszakmeister
确实是我想要的反面,但有趣的一面注意没有那么少:) –
安装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
我也问了[类似的问题在这里(http://stackoverflow.com/questions/17182624 /对github项目的贡献 - 如何重新绑定我的拉杆请求)这可能会帮助有同样问题的人 – fontno