如果您强制推送到具有现有拉取请求的分支,会发生什么情况?

What happens if you force push to a branch with an existing pull request?

我正在开发 git 分支,该分支当前是 github 上已关闭拉取请求的一部分。在最初的拉取请求之后,我做了一些额外的提交,将这些提交推送到 github,然后恢复这些提交并重新提交它们,因为我需要修改这些提交。

现在,如果我想将这些提交推送到 github,我需要发出强制推送:git push --force。但我有一种强烈的感觉,这可能会对现有的拉取请求造成混乱,即使更改的提交发生在我提出拉取请求之前存在的提交之后。

谁能告诉我如何最好地处理这种情况?我想我可能需要创建一个全新的分支,然后在该分支上发出拉取请求。但是,如果有办法 link 这对现有的拉取请求来说更好。

拉取请求的内容将是为拉取请求发送的分支中的任何内容。因此,当你 git push --force 时,PR 将在你刚刚推送到的分支中反映你修改后的提交历史。

推送到具有现有拉取请求的分支将更新拉取请求,提交完成之后并不重要拉取请求。

如果您不想更改拉取请求,您应该创建一个 分支并进行处理。

如果我没记错的话,那么如果您以任何方式强制推送或更新有问题的分支,GitHub 将自动更新拉取请求。如果执行强制推送会导致无法进行拉取请求,那么 GitHub 会告诉您这一点。

您无需担心更新拉取请求,因为 GitHub 会为您处理。

这就是说,在 任何 远程分支上执行 git push --force 可以 给你的同事造成混乱,他们目前也在在这个分支上工作。所以你回避强制推送是正确的,但幸运的是 GitHub 拉取请求不是你最大的问题。

在常规使用 git push --force 之后 但今天关闭了 GitHub PR 我无法再重新打开它,因为按钮被禁用,并显示消息:

The patch-1 branch was force-pushed or recreated.

但是,根据 isaacs/github#361 (specifically this),这似乎只发生在已关闭的 PR 上。