如何从拉取请求中删除提交?

3

我在我的拉取请求中有一个提交。然后我尝试更改我的电子邮件,并在此之后强制推送更改。现在,我在我的拉取请求中有很多来自其他人的提交。如何删除这些提交?

我尝试了git reset,但其他人的提交仍然显示在拉取请求中。

现在,我的分支中包含了自主库创建以来的所有提交。


不,PR分支是正确的。我通过更改电子邮件来修改了PR。 - barq
我按照这里的建议(https://help.github.com/articles/keeping-your-email-address-private/)对历史记录进行了重写。 - barq
那么,您是否按照该页面底部建议使用了git filter-branch命令? - das-g
是的。@das-g - barq
让我们在聊天中继续这个讨论。点击此处进入聊天室 - das-g
显示剩余3条评论
2个回答

6

可能发生的情况

很可能,在您提交当前拉取请求之前,上游存储库已经包含了一些(至少一个)您的提交(使用旧/真实电子邮件地址)。当您按照GitHub的更改作者信息指南操作时,这些提交也被filter-branch脚本重写,并且所有这些提交的后代(无论是否由您)也被重写。

这就是为什么该页面有一个红色警告框

此操作会破坏您的存储库历史记录。如果您正在与他人协作使用存储库,则重写已发布的历史记录被认为是不好的做法。您应该只在紧急情况下执行此操作。

和一个蓝色信息框进一步解释

注意:运行此脚本会重写所有存储库协作者的历史记录。完成这些步骤后,具有分支或克隆的任何人必须获取重写的历史记录并将任何本地更改合并到重写的历史记录中。

您在该存储库中的第一个提交可能很早,这就是为什么您现在在拉取请求中看到了几乎整个存储库的历史记录。

当前PR可能引起的问题

如果您修改后的拉取请求按原样合并,则上游存储库将有其当前提交的大部分重复:一次是原始状态,一次是您重写的状态。这将导致存储库历史记录非常混乱,并且没有任何好处,因为您的旧/真实电子邮件地址仍然存在于历史记录中。

您可以(也应该)做的事情

要么撤回您的拉取请求,要么

  1. 找到您的分支最初基于的上游存储库提交。
  2. 将您的分支重新基于该提交。这应该可以避免任何合并冲突。
  3. 再次强制推送您的分支,从而再次更新拉取请求。

现在,您的拉取请求应该只引入新贡献的提交,并且(如果其他方面良好且需要)可能会被上游存储库所有者接受。


2

如果您更新了分支,PR将会更新。根据您的需求对分支进行操作,使其看起来符合您的要求。您可能需要重置并强制推送更改。

如果是我,我会取消该PR并创建一个新的。


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