为github上的项目做贡献,如何“在主控之上重新定位我的请求”

好的,所以我在github上贡献了一个项目。 github upstream的项目是upstream ,我在github upstream分叉回购是origin ,而我的local回购在我的电脑上。

 git checkout -b feature # Working on feature git commit -a -m 'only commit on feature' 

然后我提交一个拉请求

 git push origin master 

拉动请求被审查并且需要做出不相关的变化。 其他人提交并合并成upstream/master

现在我被upstream维护人员要求“在主人之上重新提出我的请求”

这是我的故事(插入法律和秩序的声音效果)…..

我没有做任何更改的拉动请求,它仍然是在分支function提交。

 git checkout master git fetch upstream git checkout feature git rebase master => "Current branch feature is up to date." git push origin feature => "Everything up-to-date" 

我不明白。 当我将我的拉取请求推送到origin/feature后,我知道有人已经提交并合并到upstream/master时,这怎么可能?

任何人都可以告诉我在这种情况下正确的程序应该是什么?

您只在上游回购中显示提取。 这实际上并不会更新您的任何本地分行。 它只会更新你的upstream知识 。 您需要确保upstream/master完全合并到您的master ,就像使用git pull ,在重新绑定到master之前,或者更简单地将其重新绑定到upstream/master

即:

 git checkout master git pull upstream master git checkout feature git rebase master 

要么

 git checkout feature git rebase upstream/master 

更新:

修复你的本地feature分支之后,你需要将它推回origin来完成更新拉取请求。 既然你已经推出了feature ,你不能再简单地push ,因为一个基地改变的历史,它不是一个快速前进。 通常情况下,如果一个“非快进”失败,你可以通过拉动来解决,但是一拉只会结合两个不同的历史,这绝对不是你想要的。 那将意味着你的旧的(pre rebase) feature分支将与新的(post rebase)合并。 您想用新feature分支的状态覆盖 origin/feature ,转储旧feature任何logging。 这意味着即使使用git push -f origin feature ,它并不是一个快速前进的动作,但是您仍然希望强制推送发生。 注意:强制推送是危险的 ,你可以失去它的提交。 只有当你确定你知道你在做什么的时候才使用它,就像在这里,你故意要放弃在pre-rebase feature分支中旧的,无用的提交。

现在我被上游维护人员要求“在主人之上重新提出我的请求”

请注意,自2016年9月以来,维护人员可以自行触发rebase。

请参阅“重新引用并合并请求 ”

当您select新的“重新合并和合并”选项时,来自请求分支的提交将重新分配到基本分支的顶端,然后基本分支本身被快速转发到新重新分配的头部。 Rebases会自动将重新提交的提交者设置为当前用户,同时保持作者信息不变。 该请求的分支将不会被此操作修改。

如果由于冲突而无法执行重设,我们会通知您,以便您可以根据需要手动解决它们。

assets/2195/18671961/a03fa9b6-7f35-11e6-8fa0-e16b2fede8ca.gif