BFG Repo Cleaner - 删除的文件仍在提交更改中。

3
我需要从我的Web应用程序和git历史记录中删除配置文件。我已经使用bfg repo cleaner工具完成了这个过程。我按照文档中概述的步骤进行操作:
1. `git clone --mirror url.git` 2. `java -jar bfg-1.13.0.jar --delete-files "{App.config,Web.config}" repo-name.git` 3. `git reflog expire --expire=now --all && git gc --prune=now --aggressive`
我将结果推送到GitLab中的新存储库中。文件已从历史记录中消失。我可以检出旧的提交,而文件不会被下载。
但是,当我查看涉及Web.config文件的提交详细信息时,更改部分显示了Web.config文件的差异。因此,仍然有可能查看配置文件的文本。
我在使用bfg工具时漏掉了什么吗?还是这是工具无法更改的内容?如何从提交更改摘要中删除这些文件?
2个回答

1
但是,当我查看涉及Web.config文件的提交细节时,更改部分显示了Web.config文件的差异。因此,仍然可以看到配置文件的文本。
不幸的是,解释历史重写的细节有几个微妙之处,上述描述模糊不清——您在哪里看到这个?您是否执行了针对本地存储库的diff命令,还是查看GitLab上的url?-提供屏幕截图、url或您正在调用的示例Git命令将有助于诊断。
我假设您正在查看像这样的url,其中提交ID(例如e081c0cba2dd5b1a19d22b44918022f72035434c)是url的一部分:

https://gitlab.com/gitlab-org/gitlab-ce/commit/e081c0cba2dd5b1a19d22b44918022f72035434c

重要的是要认识到,提交 ID 是该提交文件树内容和导致该提交的整个提交历史的哈希值。因此,如果更改提交历史记录,则会获得新的提交 ID。如果查看旧的提交 ID,则将看到旧的提交数据和旧的提交文件树。
这什么时候会消失呢?
最终,GitLab 将在您的存储库上运行 git gc,并且该包含提交 ID 的 URL 将不再可访问。您还可以要求 GitLab 支持运行 git gc:

-1

这不就是说*.config文件只在最后一次提交中吗?

这个提交没有被BFG修改,所以也许这就是你看到的...

来自BFG文档:

您当前的文件是神圣的...

BFG把你当作一个戒酒者:你过去犯了一些错误,但现在你已经改过自新了。因此,BFG假设您的最新提交是好的,其中没有您想要从历史记录中删除的脏文件。BFG的这种假设保护了您的工作,并使您放心,知道BFG只会更改您的存储库历史记录,而不会干扰您项目中的当前文件。


这不是最新的提交。我可以在历史记录中查看更早的提交差异。 - tamster008

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