从GitHub中删除已关闭的拉取请求

380

我不小心提交了错误的拉请求,结果关闭了请求。现在它处于关闭状态,但可以通过直接URL访问,并显示在我的活动栏中。

有没有办法完全删除拉请求,使其不再通过URL访问或在您的活动历史记录中显示?


3
不行,你只能关闭它。 - Eugene Ryzhikov
12
GitHub账户和用户界面相关的问题最好在http://WebApps.StackExchange.com或直接联系他们的支持部门解决。 - random
4
您可以通过删除并重新创建存储库来摆脱所有拉取请求(以及其他类似LFS文件的东西)。大多数情况下,您无法承担此成本,但如果您在早期出错可能会有所帮助。 - Machta
6
伟大的Q和另一位SO官僚的受害者。回答也非常好。 - RichieHH
4个回答

402

你无法自行删除拉取请求 -- 你和资料库拥有者(以及所有具有推送权限的用户)可以将其关闭,但它仍将保留在日志中。这是不否认/隐藏开发过程中发生的事情哲学的一部分。

然而,如果有重要理由需要删除它(主要是违反了GitHub服务条款),GitHub支持人员会为您删除。

无论他们是否愿意替您删除PR,您都可以轻松地向他们询问,只需向support@github.com发送电子邮件即可。

更新: 目前GitHub要求在此处创建支持请求: https://support.github.com/contact


71
他们(Github员工)只会删除包含敏感数据的拉取请求。 - Yousha Aleayoub
6
有用信息:https://help.github.com/articles/removing-sensitive-data-from-a-repository/"...您可以通过联系GitHub支持团队,永久删除GitHub上存储的所有缓存视图和拉取请求。" - Justin Domnitz
10
很伤心。因为我在维护一个分支仓库,而默认的PR是基于主分支提交的,所以我每周都会提交一个糟糕的PR。在某个时候,我们需要从主分支上分离出来,但现在...有太多已关闭的PR了。 - Erik Aronesty
4
说句题外话,今天我联系了GitHub支持团队,请求删除一个由错误提交到我作为管理员的另一个代码库的PR。他们为我删除了它,并且非常友善。 :) - Marc.2377
71
我猜我不得不加上我的社会安全号码和出生日期才能删除这个永久居留权 :( - Neel
显示剩余3条评论

44

如果你从一个 forked 仓库提交了 pull request,以下是五个步骤让你做到想要的结果:

  1. 重新打开 pull request
  2. 切换到你提交 pull request 的分支
  3. 将 commit 重置到最新的 master commit(这意味着删除所有新的代码)。命令:git reset --hard commit_hash_here
  4. git push --force
  5. 删除你 fork 的仓库,该仓库用于提交 pull request

一切都完成了,祝好运!


4
即使该存储库不是派生的,这也适用。只需确保首先备份分支即可。 - slajma
27
这实际上并不会删除 Pull Request(PR),它只是关闭了 PR,PR 仍然可以在日志中看到。 - Ishan Jain
3
在这种方法中,一个重要的点是确保在强制推送之前重新打开PR。也就是说,在进行下一步之前必须执行步骤1。否则,一旦您强制推送了更改,您将无法重新打开PR。 如果万一您没有执行步骤1并且强制推送了,仍然可以通过繁琐的解决方法重新打开 - https://github.com/isaacs/github/issues/361#issuecomment-219088644 - Darshan L
尽管我按照步骤进行操作,包括第一步,但它仍然无法正常工作。该 PR 变成了“已关闭”状态,并仍然列在已关闭的 PR 列表中。 - kamae
这个PR仍然被列出来,但至少之前没有推送过代码。 - Pavlo Zhukov
1
不幸的是,如果在非分叉PR上使用此技术,它并不能完全清除旧代码。您最终会在关闭的PR底部看到像这样的消息:some-user force-pushed the some-branch branch from 12bcd456 to 455abc 2 minutes ago这些是SHAs,并提供了指向“删除”的代码的直接链接。 - Mark Adamson

35
这是我从Github收到的回复,当我请求删除一个拉取请求时:
“感谢您的联系!目前无法通过界面删除拉取请求,我们只会在拉取请求中包含敏感信息(如密码或其他凭据)时才会删除它们。”

28
因此,解决此缺失功能的方法是编辑拉取请求以添加社会安全号码 - 它可能不必是您自己的! - user11638666

-2

其实很简单:

你可以清空它,这是你能做的最好的事情。

  1. 前往本地仓库

  2. 将开放PR的分支unwanted-branch复制到一个新分支new-branch。如果你想备份它,这个复制是相关的。否则,请执行第3步。

    • $ git branch -b new-branch
    • $ git merge unwanted-branch
    • $ git push
  3. 清空unwanted-branch

    • $ git checkout unwanted-branch
    • $ git reset --hard HEAD~n #n 是分支所具有的提交数
    • $ git push -f

现在,你的PR已经被清空并关闭了;)。 如果它让你感到困扰,请前往远程并删除不需要的分支。


3
这将清空PR,以防在PR中发布了区分大小写的数据,但OP希望完全删除存储库的贡献活动和关闭的PR列表中的PR。显然这是不可能的。 - Yılmaz Alpaslan
1
是的,Git 的道德规范不允许这样做。 - edam
21
Git本身对于删除分支或提交并没有问题。问题在于GitHub不允许在此处删除Pull Requests。 - Ordoshsen
3
这个好像不起作用,即使只是删除内容,虽然 PR 看起来是空的,但你仍然可以比较强制推送的“提交差异”。 - Jonatan Cloutier
只是一个额外的提示:不要先关闭PR,否则它会忽略你所做的任何事情,并且在你处理分支后也不会让你重新打开它。 - fifaltra

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