如何更改已关闭/合并的拉取请求的基分支?

4
我fork了一个存储库,做了一些更改,提交了它们并发送了一个拉取请求。 PR被接受,更改被合并到上游存储库中。 但是,我后来意识到,我犯了一个错误,即从我的分支的主分支发出PR,而不是创建一个单独的分支进行所有更改,并从那里提交PR。
我想知道是否有办法更改已关闭/合并的PR的基本分支?
假设这是不可能的,删除fork是否明智?尽管我非常担心它会删除所有有价值的讨论以及现有PR上的行注释。
非常感谢您能提供的任何帮助。
编辑1:我将@bk2204的回答标记为已接受的答案,因为作者进一步解决了删除fork的可能后果。虽然@msanford的答案也非常有帮助,我希望我可以选择两个答案。谢谢!
2个回答

3
首先,看起来你想要改变与拉取请求关联的分支而不是基本分支(即将合并到的分支)。无论哪种情况,都无法更改已合并的拉取请求的分支。该拉取请求被视为已完成,不可能更改。
在这种情况下,由于使用错误的分支,不必删除您的派生分支。您现在可以随心所欲地修改您的主分支,因为拉取请求已关闭;历史记录已归档在主存储库和GitHub端,并且对您的主分支进行进一步更改将不会影响拉取请求。
但是,如果出于其他原因想要删除您的主分支或派生分支,则可以这样做,而不会对上游项目或拉取请求产生负面影响。

1
感谢您及时而非常详细的解释。基于以往的帖子,似乎并没有一个确定的答案,关于在合并PR之后删除分支(fork)是否仍将保留来自评审者(s)的讨论以及行级注释。您介意澄清一下"不会对上游项目或拉取请求产生负面影响"的含义吗? - ottowichterle
我的意思是合并后,拉取请求将保持完整,包括所有评审人员的讨论和评论。删除您的分支(而不是您的分支)的唯一缺点是拉取请求将显示为来自“未知存储库”。如果这让您感到困扰,您可以保留该分支并将其存档,或者只是将其保持不活动状态。 - bk2204

1

很高兴你注意到了这个问题并想要采取行动。

然而,这个公关请求已经被负责上游项目的某人进行了审查和合并。这意味着他们接受了你的更改,所以不需要担心,也没有什么需要你做的。

要深入了解你所关心的内容,分支只是将一系列提交链接在一起的有用抽象。你从自己的master发送PR而不是从你从master分支出来的补丁分支发送PR是无关紧要的。假设你打算从master基于你的补丁分支,一个补丁分支和你的主分支最终成为相同的东西,因为它们包含相同的历史记录

如果你的补丁要进入上游repo中的功能分支,该分支不包含来自master的工作(出于任何原因),额外的更改也会显示在你的PR中,你和上游审阅者都会注意到。

为了完整起见:如果您确实需要修复错误地包含的工作,那么可能需要一系列撤销提交并进行新的拉取请求。


感谢您迅速而且非常详尽的解释。回想起来,我应该基于master分支创建我的补丁分支。最初,我担心从我的fork的 master分支提交PR,因为根据我的了解,基于分支的任何进一步提交都将自动添加到PR中(这可能会有问题,因为我打算继续为项目做贡献)。然而,这显然仅适用于尚未被接受和合并的PR。 - ottowichterle
请纠正我如果我错了,因为我的PR已经合并,我想继续开发新功能,首先我应该通过以下方式同步我的分支(因为没有必要删除它):git remote add upstream https://github.com/UPSTREAM-USER/ORIGINAL-PROJECT.git; git fetch upstream; git checkout master; git merge upstream/master 然后 git checkout -b myothernewfeature - ottowichterle
@ottowichterle 大部分正确,但可以更简短。是的,添加上游远程,然后只需执行 git pull -r upstream master(从上游的 master 更新本地副本)和 git push(将更新的 master 推送到您的 fork)。完成。 - msanford

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接