问题描述
我正在使用bfg-cleaner从github上删除一些包含敏感信息的文件。除了请求请求,它工作正常。敏感日期仍然存在于拉取请求中。我该如何摆脱呢?
解决方法
首先,您可以考虑使用new git filter-repo
的will 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的源分支并强行推动它应该足以更改“拉取请求”(尽管其页面可能仍引用以前已经过时的提交)。