2017-09-05 78 views
0

我打开了一个PR,然后意识到我想恢复最新的提交。所以,我没有拉请求意外关闭

git reset --hard HEAD~1

再上新的变化工作,做

git push --force-with-lease

作为一个非常意外的结果,PR得到了关闭。

enter image description here

有一件事我要补充的是,我用力推开其实之前添加任何提交。这可能是公关为什​​么关闭了吗?

+1

通过删除最后一次提交,您是否删除了PR以前的所有提交?还是有其他承诺是公关的一部分? – poke

+0

所有这些;所以这个分支与'master'一致。 –

+1

那么,这样就使PR成为“空的”,所以当GitHub在更新分支(它自动检测PR中的变化)后重新检查pull请求时,它确实看到上游的master已经包含了公关(因为公关没有包含任何新内容),并自动将公关合并。 – poke

回答

2

GitHub会自动监控分支的pull请求,所以对分支的更改将反映在pull请求中。主要的用例是简单的更新地址代码审查。它不限于简单的提交添加,但是对分支上的任何更改都是如此。因此,例如,重写历史记录(例如,合并代码更改)的重新绑定也将出现在拉取请求中,取代之前的提交。

因此,当您在将分支恢复为master后强制推送分支时,您基本上已经清空了拉取请求。因此,当GitHub检查分支的拉取请求时,它注意到上游的master已经包含来自拉取请求的“所有更改”(因为没有)。

这会自动触发GitHub的拉取请求解析并关闭拉取请求。

+0

谢谢。有没有任何github文件指出这一点? –

+0

@Ursus我在文档中找不到任何东西。最近我发现是[这个评论](https://github.com/github/hub/issues/198#issuecomment-6495118)它解释了一点,GitHub确实这样做。实践会告诉你,我解释的是实际行为:) – poke

0

作为一个非常意外的结果,PR得到了关闭..

在截图的消息说,别的东西:拉请求是“成功合并和关闭”

这应该不是一个意外的结果。将分支合并到PR的目标分支中是您首先完成PR的原因。

您从等式中省略了,当您创建PR时,将通知项目的所有者。我怀疑他们在您重新修改分支上的更改时审查了您的公关并将其合并。然后你试图重新分支分支,但是,由于PR已经合并并关闭,Github不再更新PR。


有可能推新的提交,甚至衍合那些参与pull请求和Github上尽职尽责地保持拉入请求最新的所有分支上的变化的一个分支。但是合并请求关闭后(合并与否),它成为历史的一部分,不再更新。