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

fra*_*ure 16 git github pull-request

我正在开发一个git分支,它目前是github上一个关闭的pull请求的一部分.在初始拉取请求之后,我做了一些额外的提交,将这些提交推送到github,然后还原那些提交并重新发送它们,因为我需要修改提交.

现在,如果我想将这些提交推送到github,我需要发出一个强制推送:git push --force.但我强烈认为这可能会导致现有的pull请求出现混乱,即使更改的提交发生在我发出pull请求之前存在的提交之后.

任何人都可以向我描述如何最好地处理这种情况?我想我可能只需要创建一个全新的分支,然后在该分支上发出一个pull请求.但是,如果有办法将此链接与现有的拉取请求相关联,那么这将是更可取的.

Tim*_*sen 13

如果我的记忆正确地为我服务,那么如果您以任何方式强制推送或更新有问题的分支,GitHub将自动更新拉取请求.如果执行强制推送会导致拉取请求无法执行,那么GitHub会告诉您这一点.

您无需担心更新拉取请求,因为GitHub将为您处理此问题.

这就是说,git push --force任何远程分支上执行操作可能会给正在此分支机构工作的同事造成混乱.因此,你回避强迫推力是正确的,但幸运的是,GitHub拉动请求不是你最大的问题.

  • 这是我的感受。GitHub 拉取请求实际上并不“存在”在 Git 中,它只是一个潜在的操作(合并),如果有人单击绿色按钮,则可能会发生该操作(如果 GitHub 无法进行合并,则该按钮将不可单击) )。另一方面,如果您通过强制推送重写远程分支的历史记录,那么任何拉取的人都会得到一个丑陋的惊喜。 (3认同)

Lar*_*rsW 6

使用后git push --force经常上但收盘 GitHub的公关今天我不能重新打开它了,因为按钮被禁用,与消息:

patch-1 分支被强制推送或重新创建。

然而,根据isaacs/github#361(特别是这个),这似乎只发生在封闭的 PR 上。

  • 我能够通过强制推送关闭状态下的分支来回到 PR 可以重新打开的状态。为了到达那里,我使用 `git reflog` 和 `git reflog --date=iso` 来查找关闭前最后一次提交的 SHA1,然后使用语法 `git push origin <SHA1>:<branch_name_on_origin> --force` 其中origin 是我的 github 存储库的主存储库的分支(我关闭了主存储库上的拉取请求)。[根据我对 github 问题的评论] (3认同)