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

时间:2019-03-26 22:20:17

标签: git git-rewrite-history bfg-repo-cleaner

我需要从Web应用程序和git历史记录中删除配置文件。我已经使用bfg回购清理器工具完成了此操作。我完成了文档中概述的步骤:

  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 个答案:

答案 0 :(得分:0)

不仅仅是*.config文件仅在最后一次提交中吗?

BFG不会修改此提交,所以也许就是您所看到的。...

来自BFG doc

  

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

     

BFG对待您就像是经过改良的酒鬼:过去您犯了一些错误,但是现在您已经清理了行为。因此,BFG假设您的最新提交是一个不错的提交,您没有想要从历史记录中删除的脏文件。 BFG的这一假设可以保护您的工作,并且让您放心,因为BFG只会更改您的回购历史记录,而不会干预您项目的当前文件。

答案 1 :(得分:0)

  但是,当我查看涉及Web.config文件的提交的详细信息时,   更改部分显示了Web.config文件的差异。所以还是   可能会看到配置文件的文本。

不幸的是,解释历史重写的方式有许多细微差别,并且上面的描述是模糊的-您在哪里看到的?您是针对本地仓库执行diff命令,还是在GitLab上查看网址? -提供屏幕截图,网址或您正在调用的示例Git命令,对于此处的诊断非常有用。

我将假设您正在查看这样的URL,其中一个提交ID(例如e081c0cba2dd5b1a19d22b44918022f72035434c)是该URL的一部分:

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

在这里要意识到的重要一点是,提交ID是该提交文件树的内容的散列,以及导致该提交的整个提交历史。因此,如果您更改提交的历史记录,则会获得一个新的提交ID。如果您查看旧的提交ID-您将看到旧的提交数据和旧的提交文件树。

那什么时候消失?

最终,GitLab将在您的存储库上运行git gc,并且该URL(带有提交ID的URL)将不再可访问。您还可以要求GitLab支持来运行git gc