bgf清洁器不会更新拉取请求

问题描述

我正在使用bfg-cleaner从github上删除一些包含敏感信息的文件。除了请求请求,它工作正常。敏感日期仍然存在于拉取请求中。我该如何摆脱呢?

解决方法

首先,您可以考虑使用new git filter-repowill replace the old git filter-branch or BFG

它具有many usage examples,包括基于路径的过滤:

要保留除这些路径以外的所有文件,只需添加--invert-paths

git filter-repo --path aFileToRemove --invert-paths

第二,关于请求请求,您需要fetch them first

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@github.com:joyent/node.git
    fetch = +refs/pull/*/head:refs/remotes/origin/pr/*  <====

# Now fetch all the pull requests:

$ git fetch origin
From github.com:joyent/node
 * [new ref]         refs/pull/1000/head -> origin/pr/1000
 * [new ref]         refs/pull/1002/head -> origin/pr/1002

然后,在过滤之后,您将需要强制将所有内容推回去。

torek中的the comments所述:

在这种情况下,如果某人正在重写存储库以删除敏感数据,而其他人进行了PR,则敏感数据可能位于其他人的存储库中。

因此清除PR分支可能仍然不够。无论如何,任何从中创建PR的fork仍将具有敏感数据。

如果没有派生,并且PR使用本地分支(到存储库)完成,则无需获取任何refs/pull
修改PR的源分支并强行推动它应该足以更改“拉取请求”(尽管其页面可能仍引用以前已经过时的提交)。