问题标签 [bfg-repo-cleaner]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
21681 浏览

git - 如何从 git 历史记录中的文件中替换文本?

我一直使用基于接口的 git 客户端(smartGit),因此对 git 控制台没有太多经验。

但是,我现在需要在历史记录中的所有 .txt 文件中替换一个字符串(因此,不是擦除整个文件,而只是替换一个字符串)。我找到了以下命令:

我试过这个,不幸的是注意到虽然密码确实被改变了,但所有的二进制文件都被破坏了。图像等都会被破坏。

有没有更好的方法来做到这一点,不会损坏我的二进制文件?

谢谢。

编辑:

我和某事混在一起了。导致二进制文件损坏的实际代码是:

奇怪的是,顶部的代码实际上用我的密码删除了所有文件。

0 投票
4 回答
3901 浏览

git - 使用 BFG repo-cleaner 后检查 git repo

非常基本的 git 问题:

我向 Github 上传了一些有危害的信息,并正在使用 bfg 来清理 repo。我遵循了文档并执行了以下操作:

我收到以下输出:

我想查看是否已从我的仓库中清除了私人信息,但我不确定如何检查镜像仓库中的文件。有任何想法吗?

0 投票
2 回答
12187 浏览

git-rewrite-history - BFG 删除多个文件夹

我发现 BFG 比原来的 git-filter-branch 快得多。

我们有多个 svn 存储库可以移动到更多的 git 存储库,这意味着一些存储库文件夹合并和拆分。在此过程中,我需要删除一组根文件夹,并且我想将它们删除到整个历史记录中。

我尝试使用 BFG --delete-folders并且它适用于单个文件夹,但我没有找到删除多个文件夹的方法。甚至可能吗?或者我应该循环调用 BFG 多少次,因为我有文件夹要删除?

谢谢你的帮助。

0 投票
1 回答
7854 浏览

git - 如何使用 BFG repo 清理器删除一个文件夹/目录?

如何使用 BFG 只删除一个目录?

帮助说:

delete folders with the specified names (eg '.svn', '*-tmp' - matches on folder name, not path within repo)

这似乎意味着--delete-folders "config"它将匹配存储库中任何位置的所有名为 config 的文件夹。

0 投票
1 回答
2308 浏览

git - 无效 BFG 使用后 Git 合并重复

我对整个存储库(仅由我使用)感到非常厌烦,并且可以使用一些帮助来整理它。

这就是我所做的。我意识到在我的提交历史中,有一些文件包含我不想随便放置的凭据。因此,我决定合法并尝试使用 BFG Repo-Cleaner 来解决这些问题。我将所有凭据都放入 .gitignores 中,然后继续尝试将它们从历史记录中删除。根据文档说明,我执行了以下命令:

此时,BFG 告诉我已经找到并删除了 x 个文件。甜的。

根据终端日志,它更新了 repo。到目前为止一切顺利,对吧?我进入我的 github 帐户,单击几下后,在我的历史记录中找到仍然存在的凭据、文件和所有内容。我回去尝试相同的命令集,但使用这一行而不是文件删除器:

其中 passwords.txt 是一个文件,其中包含我想要的所有凭据的字符串实例。同样,BFG 日志表明它已经修复了几个实例。我向上推,检查,证书还在,坐在 Github 上。我注意到我所有提交的 SHA-1 密钥都已更改,所以大概 BFG 做了一些事情,而不是我想要它做的事情。

在这一点上,我放弃并尝试重新开始工作,我想我稍后会解决它。我做了一些工作,尝试向上推,得到一个奇怪的合并冲突(你在提交时领先 50 和落后 50)。什么?我尝试拉取和合并,突然间,我的 git 历史记录中的每一个提交都在名称上重复,其中一些只是空白。我检查了我的 Github 网络图,看起来从我的初始提交开始有第二个分支,它完全反映了我上次提交时压缩的所有提交(我从未分支过,只是一直在线性增长)。

我无法恢复到以前的提交,因为它们都是按时间顺序重复的。我的凭证仍然在那里,现在有两倍多的实例,我的历史翻了一番,而且很难理解。当我现在尝试从头开始运行 BFG,重新克隆和镜像 repo 时,它告诉我其中没有凭据,尽管我可以在 Github 中看到它们。我真的可以使用一些帮助来理解发生了什么,以及如何(如果有的话)再次回到原来的状态。

我正在考虑删除整个回购并重新开始。我真的不想那样做。

tldr; 尝试使用 BFG,以某种方式复制了我的 repo 中所有提交的半生不熟的版本,无法解开,并且雪上加霜,BFG 什么也没做,并声称它已经完成了它的工作。

0 投票
1 回答
765 浏览

git - 从 Git 中删除某个范围内未使用的大文件

我的 repo 是从一个开源项目中派生出来的,所以我不想在 ForkPoint 标记之前修改提交。我已经尝试过BFG Repo Cleaner,但它不允许我指定范围。

我想要

  1. 穿越历史ForkPoint..HEAD^
  2. 重写提交以删除所有大于 10M 的文件

如何从 git 存储库中删除未使用的对象?说应该是这样的

BADFILES不仅包含存在于HEAD?

例如,如果我错误地提交了一个HUGE_FILE然后又提交了另一个删除该文件的提交,则BADFILES搜索将找不到,HUGE_FILE因为find在当前工作树中看不到它。


Edit1:现在我正在考虑在克隆上使用 BFG,然后将我的叉子移到原始的 ForkPoint 上。fatRepo这会是正确的命令slimRepo吗?


Edit2:樱桃采摘不起作用,因为樱桃采摘无法处理 slimRepo 中的合并。我可以以某种方式粉碎 slimRepo 的历史,并简单地合并到 fatRepo/ForkPoint 上吗?

0 投票
3 回答
1685 浏览

git - 运行 BFG Repo Cleaner 后如何更新/缩小我的 github 存储库的大小

我已经使用以下过程使用BFG Repo Cleaner清理了我的 repo :

我可以看到我的本地仓库缩小了 1GB。伟大的。我现在遇到的问题是我找不到任何信息,现在我也想缩小 GitHub-repo 的大小。如何做到这一点?

git push没有用,我也试过git push origin --force --all了,这给了我这个错误信息:error: --all and --mirror are incompatible

0 投票
2 回答
928 浏览

git - 如何验证 BFG Repo-Cleaner 是否已从 git 存储库中正确删除了一个大文件?

我使用 BFG Repo-Cleaner 从 git 存储库中删除了一个大文件:

我已经使用脚本(http://stubbisms.wordpress.com/2009/07/10/git-script-to-show-largest-pack-objects-and-trim-your-waist-line/)来检查我的运行 BFG Repo-Cleaner 之前和之后的存储库,它显示了托管目录的删除,并且两个存储库中的内存也减少了。

一切看起来都不错,但是我如何验证我的所有提交是否相同?我是否必须使用 git-for-each-ref 创建一个脚本并比较两个存储库中同名的提交,以验证 BFG 是否正常工作?

任何建议将不胜感激。

0 投票
1 回答
1784 浏览

git - 为什么 BFG 会更改我的最新提交?

git filter-branch花了很长时间。幸运的是,我找到了BFG repo-cleaner

但它意外地改变了我上次提交的内容。

现在我打扫。

所有这些额外的文件都是我想要删除的。

为什么在我最近的提交中所有这些文件都被更改了?

0 投票
3 回答
4017 浏览

git - Bitbucket 担心我的 git repo 太大但我无法确认大文件

Bitbucket 令人担忧的是我的 Git 存储库超过 1 GB。实际上,在存储库详细信息页面中它说它是1.7 GB。太疯狂了。我必须在版本控制中包含大型数据文件。我的本地存储库实际上是10 GB,这意味着至少我已经在.gitignore某种程度上成功地使用了从版本控制中排除大文件。

接下来,我按照这里的教程https://confluence.atlassian.com/display/BITBUCKET/Reduce+repository+size并尝试删除未使用的大数据。files.git count-objects -v我的仓库顶层文件夹中的命令返回以下内容:

大小包183607 KB远小于 1.7 GB。我有点困惑。

接下来,我下载了BFG Repo Cleaner https://rtyley.github.io/bfg-repo-cleanerjava -jar bfg-1.12.3.jar --strip-blobs-bigger-than 100M并在顶级目录中运行命令以从所有非最新提交中删除大于 100 MB 的文件。但是,BFG 返回以下消息:

对 50M 重复相同的结果是相同的。

这是否意味着所有大于 50 MB 的文件都在最新提交中?在 Bitbucket 的源代码浏览器中,我查看了包含大型数据文件但不包含这些文件的文件夹(成功忽略)。

谁能简要解释一下关于存储库大小和存储库中大文件存在的混淆来源是什么?