0

一位开发人员认为将应用程序的安装文件放入团队在 TFS 中共享的 GIT 存储库中是一个好主意。所以我试图在 GIT 存储库中删除一个名为“Workstation Install”的文件夹,以便删除所有安装文件,然后修复现在大约 1.6GB 的包文件。

我试过 BFG Repo-Cleaner 和 Git Extensions。Git Extensions 以查看在运行 BFG 步骤后该文件夹是否仍然存在。

我对 GIT 真的很陌生,大约一年前,在我开始工作并发现问题之前,这 28 个文件被放入了 repo。

有关如何执行此操作的任何帮助或步骤。

不知道如何为 BFG 执行此操作:默认情况下,HEAD 分支受到保护,虽然它的历史记录将被清除,但最近的提交(“提示”)是受保护的提交,其文件层次结构不会完全改变。

4

1 回答 1

1

我没有使用过Git Extensions(它显然只是一个用于与 Git 交互的 GUI 工具)或TFS,但我假设我们这里只有一个 Git 存储库,并且我们没有处理更复杂的情况它是一些也需要清理的TFVC存储库的镜像。

我对 GIT 真的很陌生,大约一年前,在我开始工作并发现问题之前,这 28 个文件被放入了 repo。

好消息,这正是 BFG 旨在解决的问题!

有关如何执行此操作的任何帮助或步骤。

BFG Repo-Cleaner 的文档位于:https ://rtyley.github.io/bfg-repo-cleaner/ ...如果您花时间阅读它,您肯定会发现它很有帮助,尤其是使用部分(它解释了使用 BFG 之前和之后的过程)以及您当前的文件是神圣的......示例部分。

我试过 BFG Repo-Cleaner 和 Git Extensions。Git Extensions 以查看在运行 BFG 步骤后该文件夹是否仍然存在。

当您尝试调用 BFG 时,您使用了哪些命令行参数,它给了您什么错误或输出?这种信息对试图帮助你的人总是有用的!我在您的情况下使用的命令是:

$ bfg --delete-folders "Workstation Install"

请注意,将带空格的文件名传递给命令行应用程序总是有点微妙,但我认为用双引号将文件夹名称(只是文件夹名称,而不是它在 repo 中的路径)括起来应该可行。

不知道如何为 BFG 执行此操作:默认情况下,HEAD 分支受到保护,虽然它的历史记录将被清除,但最近的提交(“提示”)是受保护的提交,其文件层次结构不会完全改变。

您引用的是 BFG 文档中的Your current files are Holy...部分,所以我猜您已经阅读了它,但不幸的是它还不够清楚?

您可能会发现阅读此 Stackoverflow 答案很有帮助,这是另一个人对 BFG 中此安全功能的另一种措辞解释。

尝试自己再次解释一下:您不想要这些文件,对吗?因此,您可以通过正常提交从您的主分支中删除它们开始吗?那时,您可以检查您的项目在没有这些文件的情况下是否仍然可以工作(在您的情况下听起来很可能,但对于其他进行清理的项目可能并非如此 - 如果他们删除了破坏某些测试的文件怎么办?) .

然后你就准备好了重写所有 Git 历史的更激进的步骤——你可以运行 BFG,你只需要处理共享这个更新的历史的问题——你不必处理通过删除这些文件突然破坏了您的项目,因为您已经提前检查(并修复了)该问题。

为什么 BFG 中有此安全功能?

作为 BFG 的作者,我不想回答那些通过运行 BFG 意外破坏了项目构建的用户提出的支持问题 - 最好用户在运行 BFG 之前破坏并修复他们的项目!因此 BFG 不会删除最新提交中存在的任何文件 - 您需要手动确保文件树的当前版本清除那些不需要的文件。

全面披露:我是 BFG Repo-Cleaner 的作者。

于 2018-03-02T07:30:01.447 回答