【问题标题】:How to permanently remove (or hide) a commit from a GitHub PR after force pushing强制推送后如何从 GitHub PR 永久删除(或隐藏)提交
【发布时间】:2019-05-18 09:42:15
【问题描述】:

为了从 GitHub 存储库中删除提交,典型的建议是在本地删除提交(例如,通过 git rebase -i)和 force-push the modified branch over the original remote branch

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

<user><remote_branch> 分支从<old-commit> 强制推送到<new-commit>

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

根据another answer here,GitHub 应定期删除不再引用的提交。但由于他们确实在他们的 UI 中引用了旧的提交,我怀疑他们会保留它。 (我没有看到这个明显的新功能足够长的时间来确定并且还没有找到任何官方提及它。)

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

(此问题与删除密码等敏感信息无关 - 我知道,无论之后是否有可能删除提交,这些信息都应被视为已泄露。)

【问题讨论】:

  • 我怀疑这是不可能的。这几乎就像您希望远程存储库运行一个自动管理的git gc。此外,我认为您无法访问遥控器的gitconfigstackoverflow.com/questions/4212008/… 中的答案有一些见解。
  • @miqh @phd 感谢您提供这些答案的指针。我读过的大部分内容似乎不适用于这种特定情况,因为我没有看到任何解决 GitHub 在 PR 讨论日志中突出宣布向世界推送力量这一事实(并且考虑到它们链接到那里的旧提交,我相信他们很可能不会认为它是垃圾,并且不会使用 git gc 或类似的等效项来删除它)。我想最适用的建议是“联系 GitHub 支持”,但这可能只是极少数情况下的解决方案。
  • 自 2018 年起,有一个用于删除问题的测试版功能,但它不适用于 PR。 help.github.com/articles/deleting-an-issue我鼓励您联系 GH 支持。

标签: git github


【解决方案1】:

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

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

有关两者的用法,请参阅上面的文档链接。

【讨论】:

  • 链接文档中的关键部分可能是第 8 步:“联系 GitHub 支持或 GitHub 高级支持,要求他们删除缓存的视图和对 GitHub 上拉取请求中敏感数据的引用。”这很可能是唯一的解决方案,但我会稍等片刻,看看是否有人有其他想法。
猜你喜欢
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
  • 1970-01-01
  • 2013-06-29
  • 1970-01-01
  • 2020-06-03
  • 2013-05-09
  • 2019-11-14
相关资源
最近更新 更多