Git删除大文件并修复包文件

问题描述 投票:0回答:1

开发人员认为将应用程序的安装文件放入TFS中团队共享的GIT仓库是个好主意。所以我试图删除名为“工作站安装”的GIT仓库中的文件夹,以便删除所有安装文件,然后立即修复大约1.6GB的包文件。

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

我是GIT的新手,这些28个文件在我开始工作之前大约一年前被放入了回购并发现了这个问题。

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

不知道如何为BFG执行此操作:默认情况下,HEAD分支受到保护,并且在清除其历史记录时,最新的提交(“tip”)是受保护的提交,其文件层次结构不会完全改变了。

git git-extensions bfg-repo-cleaner
1个回答
1
投票

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

我是GIT的新手,这些28个文件在我开始工作之前大约一年前被放入了回购并发现了这个问题。

好消息,这正是BFG创建解决的问题!

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

BFG Repo-Cleaner的文档位于:https://rtyley.github.io/bfg-repo-cleaner/ ...如果你花时间阅读它,你肯定会发现它很有用,特别是Usage部分(它解释了导致的过程,并继续使用BFG)还有Your current files are sacred...Examples部分。

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

当您尝试调用BFG时,您使用了哪些命令行参数,以及它为您提供了哪些错误或输出?这类信息对于试图帮助您的人来说总是有用的!我在你的情况下使用的命令是:

$ bfg --delete-folders "Workstation Install"

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

不知道如何为BFG执行此操作:默认情况下,HEAD分支受到保护,并且在清除其历史记录时,最新的提交(“tip”)是受保护的提交,其文件层次结构不会完全改变了。

你引用了那里的BFG文档中的Your current files are sacred...部分,所以我猜你已经读过了,但不幸的是它不够清楚?

您可能会发现阅读this Stackoverflow answer很有帮助,这是由BFG中这个安全功能的另一个人做出的另一种措辞解释。

试着再次解释一下:你不想要这些文件,对吧?所以你可以通过正常提交从主分支中删除它们来开始吗?此时,您可以检查您的项目是否仍然可以在没有这些文件的情况下运行(在您的情况下听起来很可能,但对于正在进行清理的其他项目可能不是这样 - 如果他们删除了破坏某些测试的文件会怎样?) 。

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

Why is this safety feature in the BFG?

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

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

© www.soinside.com 2019 - 2024. All rights reserved.