强制推送后如何从 GitHub PR 中永久删除(或隐藏)提交

okw*_*wfj 12 git github

为了从 GitHub 存储库中删除提交,典型的建议是在本地删除提交(例如,通过git rebase -i)并将修改后的分支强制推送到原始远程分支上

但是,如果有问题的远程分支是拉取请求的一部分,GitHub 现在会很有帮助地显示消息

<user><remote_branch>分支从<old-commit><new-commit>

和显示的链接以查看之间的差异<old-commit><new-commit>。(这似乎是最近的变化,我不记得以前遇到过这个消息。)

根据这里的另一个答案,GitHub 应该定期删除不再被引用的提交。但是因为他们确实在他们的 UI 中引用了旧的提交,我怀疑他们会保留它。(我已经很长时间没有看到这个明显的新功能了,也没有发现任何官方提到它。)

是否可以以防止其他用户看到该提交的方式删除远程提交?或者至少可以从 PR 讨论页面中删除上面的消息?有没有其他方法可以更改 PR 底层分支的内容,而每个人都无法从 PR 页面访问旧提交(至少除非他们知道提交哈希)?

(这个问题与删除密码等敏感信息无关 - 我知道无论之后是否有可能删除提交,这些都应该被视为受到损害。)

cod*_*mev 1

虽然通常用于删除敏感数据,但这也适用于删除提交/文件。来自GitHub 的文档

如果您将密码或 SSH 密钥等敏感数据提交到 Git 存储库,则可以将其从历史记录中删除。要从存储库历史记录中完全删除不需要的文件,您可以使用 git filter-branch 命令或 BFG Repo-Cleaner 开源工具。

请参阅上面的文档链接以了解两者的用法。

  • 链接文档中的关键部分可能是第 8 步:“联系 GitHub 支持或 GitHub 高级支持,要求他们删除缓存的视图以及对 GitHub 上拉取请求中敏感数据的引用。” 这很可能是唯一的解决方案,但我会稍等一下,看看是否有人有其他想法。 (7认同)