3

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

  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 工具时是否遗漏了什么?或者这是工具不会改变的东西?如何从提交更改摘要中删除文件?

4

2 回答 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在您的存储库上运行,并且该 url(带有该提交 ID)将不再可访问。您还可以要求 GitLab 支持运行git gc

于 2019-03-27T14:54:56.230 回答
-1

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

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

来自BFG 文档

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

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

于 2019-03-26T22:30:19.477 回答