如何从pull请求中删除提交?

时间:2016-02-21 18:03:14

标签: git github pull-request

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

我尝试过重置,但其他人的提交仍然显示在pull-request中。

现在,我的分支机构自创建主存储库以来已经完成了所有提交。

2 个答案:

答案 0 :(得分:5)

可能发生的事情

在您提交当前拉取请求之前,上游存储库可能已包含一些(至少一个)提交(使用您的旧/真实电子邮件地址)。当您遵循GitHub的Changing author info配方时,这些提交也被filter-branch脚本重写,并且通过扩展,所有这些提交的后代,无论是否被重写,也被重写。

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

  

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

和蓝色信息框详述

  

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

你在该回购中的第一次提交可能是其历史的早期,这就是为什么你现在在拉动请求中看到几乎整个回购的历史。

当前PR可能导致什么

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

你可以(而且应该)做什么

撤回您的拉取请求,或

  1. 找到您的分支最初基于的上游回购提交。
  2. 将您的分支重新定位到该提交。这应该是可能的,没有任何合并冲突。
  3. 再次强制推动您的分支,从而再次更新拉取请求。
  4. 现在,您的pull请求应该再次引入新提交的提交,并且可能(如果其他方面很好并且想要)被上游存储库所有者接受。

答案 1 :(得分:2)

如果您更新分支机构,PR将更新。做你需要做的事情,让分支看起来你想要它看起来如何。您可能需要重置它并强制推动您的更改。

如果是我,我只是取消PR并重新制作。