问题标签 [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.
regex - 从 git 历史记录中删除多个换行符
我试图用 bfg repo 清洁器从代码中的多个空行(超过 4 行)中清除我的 repo。我尝试了各种正则表达式,但没有想出解决方案。我获得的最接近的结果是简单地从文件中删除所有新行。
任何想法如何使用 bfg 或任何其他工具来做到这一点?
git-rewrite-history - BFG repo 清理器可以对文件执行任意操作吗?
我想使用 MacOS 上的 imageoptim-cli 之类的工具从 git 历史记录中压缩图像以缩小 repo 大小。BFG 可以支持运行一些更任意的命令吗?我git filter-branch
看起来像这样:https ://gist.github.com/zbeekman/7482ccd0e87f495387951bd612dc390e
git filter-branch --prune-empty --tree-filter 'pwd ; ls -a ; imageoptim -a -q --verbose -d <path/to/img/dir/here> || true' -- --all
但这在每次提交时都会在这些文件上运行图像工具,即使在它们被引入之后也是如此。
git - 从 github 和历史记录中删除文件
我知道之前有人问过这个问题,但我仍然对我需要采取的确切步骤感到困惑。
几个月前,我在 github 上的公共存储库(我拥有)中提交了一个包含敏感信息的文件。我现在必须删除这个文件以及它的任何痕迹。
具体来说,它是一个web.config
包含一些数据库详细信息的文件。我需要删除连接字符串,但我很乐意删除整个文件并在需要时将其添加回来。
从那以后有很多提交。
我查看了BFG,这听起来像是适合这项工作的工具,但这并没有奏效——可能我犯了一个错误。
脚步:
输出:
该文件仍然存在,我究竟需要做什么才能web.config
从存储库中删除该文件?
更新
好的,因此建议删除 web.config,然后重新运行命令:
然后我重新运行了上面的所有命令,我得到了:
更新 2
原来 BFG 工作正常,我不小心输入了web.config
小写而不是实际的Web.config
. 无论如何它已经解决了我的问题:)
git - Git rebase 非裸仓库后如何使用 bfg-repo-cleaner?
概述
我有 Git 存储库,它作为来自其他地方的许多配置的存档:
- 200个目录
- 每个目录 100 个文件
- 每个文件 10K 纯文本
- 每天约 1000 次提交,通常编辑不到 10 行
- 1 家分店
- 1 个用户处理所有提交
- 所有其他只读的视图回购
在有人建议我尝试将这个 repo 分解成更小的 repo 之前,这不是一个选择,因为客户。
回购包含约 2 年的数据,但我们的客户只需要最后 90 天。
过程
90 天前,我使用此处描述的方法成功地将根嫁接到了提交上:
- git checkout -b newroot xyz_90_days_old_rev
- git 重置 abc_original_root_rev
- 混帐添加。
- git commit --amend -m '清除历史记录'
- git结账大师
- git rebase --onto newroot xyz_90_days_old_rev
问题是之后使用 git-filter-branch cleanup - 它需要 > 24 小时,这对用户来说是不可接受的停机时间。
我想改用 bfg-repo-cleaner ,但我不清楚:
- 它支持这个用例吗?
- 它适用于非裸回购吗?
PS:我现在知道这git checkout --orphan
会稍微优雅一些,但它并没有真正改变BFG
需要 repo 裸露而checkout
要求它不裸露的问题
git - 如何使用 BFG 删除受保护的提交
使用 BFG ( https://rtyley.github.io/bfg-repo-cleaner/ ) 清理 repo 时,遇到以下情况:
git - Git LFS - 两台不同机器上缺少不同文件的致命错误
我正在将现有的存储库迁移到 git lfs,似乎我设法创造了一场完美的风暴。
目前有两台机器:A和B。
机器 A 缺少文件 X 的内容。调用git lfs fetch --all origin
. 机器 B 缺少文件 Y 的内容。
我尝试调用git lfs push --all origin
两者。它在机器 A 上不起作用,因为它没有文件 X。它在机器 B 上不起作用,因为它没有文件 Y。
我怎么可能解决这种情况。我不知道这是怎么发生的,甚至可能发生。
git lfs push
在其中一台机器上的输出:
git lfs fetch
在其中一台机器上的输出:
我正在使用 bfg repo 清洁器执行到 LFS 的迁移。
** 编辑 **
我执行的步骤:
- 以旧形式(从转换之前)到机器 A 的整个 repo 的 Git 克隆。
- 我在机器 A 上运行 BFG,它基本上重写了主分支的历史(没有其他分支远程保存)。
- 我
git push origin master --force
按照你应该用新版本的 master 替换旧版本的 master 来运行。 - 我
git fetch
在机器 B 上运行以获取所有文件。 - 机器 B 上有一些提交,在 master 中尚未发送到服务器 - 因为它们会导致 repo 超出配额。因此,我运行
git rebase --onto origin/master HEAD~3 HEAD
将未发送的新提交移动到新版本的 master。 - 我
git push origin master
在机器 B 上运行。
这就是我现在的位置。
git - 为什么当我复制笔记时存储库大小会翻倍?
我使用 Subgit 导入 SVN 存储库,这是一个出色的工具,可以快速完成并支持自定义 svn 布局。Subgit 将 git commit -> svn 修订参考保存在git notes
. 每个提交在注释中都有修订号,您可以使用git log
.
在 SVN->git import 之后,我使用 BFG 存储库清理器从 jar、dll 等二进制文件中清理旧项目存储库。BFG 不会重写 git 注释和更改的提交之间的链接,但幸运的是它留下了object-id-map.old-new.txt
文件。
我使用此文件将注释从旧提交复制到新提交:
cat object-id-map.old-new.txt | git notes copy --stdin
复制笔记后,我将它们从旧对象中删除:
cat object-id-map.old-new.txt | cut -d' ' -f 1 | git notes remove --stdin --ignore-missing
问题是在修复 git notes 存储库大小后会变大 2 倍(即使我没有克隆--bare
)。为什么?
示例:我已经使用 Subgit 从 svn 导入了 repo,并且有 400Mb .git
。然后我应用 BFG 并获得 40 Mb 裸存储库。我想通过使用上面的 2 个命令移动(复制和删除)它们来恢复 git 笔记,但不幸的是 repo 的大小从 40 Mb 增长到 80 Mb。我尝试执行git notes prune
,git reflog expire --expire=now --all && git gc --prune=now --aggressive
这是 BFG 推荐的,但仍然有 80 Mb。
UPD:现在无法重现 40 Mb 回购:/ BFG 清理后为 80,复制笔记后为 86
git - 我怎么知道我已经成功完成了 BFG Repo-Cleaner 的最后一步?
我在这里按照 BFG Repo-Cleaner 网站的指示进行操作...
https://rtyley.github.io/bfg-repo-cleaner/
一切似乎都已成功运行,我的仓库现在要小得多,但是当我尝试做最后一步时......
我得到的回报就是这个
执行 git push 后,我检查了我的远程仓库,它位于我完全控制的 GitLab 实例上,我没有看到任何推送发生的记录。另外,GitLab 上的存储库仍然显示它是我开始使用 BFG Repo-Cleaner 之前的大容量。
我确保我在 GitLab 上的分支不受保护,并且我的帐户有权推送到它。
我不确定我是否做错了什么,或者这是预期的行为,我不知道如何验证 git push 是否确实有效。
bfg-repo-cleaner - can bfg-repo-cleaner list affected files before deleting them
From the command line option I can not see that there is a way to see what bfg will do before doing it.
If I run this command:
Can I get a list of files larger than 1M before actual deleting them?
git - 使用 BFG 重写 git 历史后是否需要垃圾回收
我们在我们的 bitbucket 存储库中提交了一些密码,这违反了我们的组织安全策略,因此我使用 BFG Repo Cleaner通过在本地创建镜像然后将所有密码替换为Removed一词
它完成了他们网站上描述的工作,密码确实被删除了!
令人惊讶的是它
- 替换文件中的密码
- 删除旧的提交
- 然后进行一些新的提交,而不是根据旧的提交重写历史......
所以问题是仍然可以从指向旧提交的旧 bitbucket url 查看密码
我的问题是如何从 bitbucket 或 git 历史记录中删除已删除的提交?这反过来会阻止指向已删除/旧提交的 URL 显示我们打算删除的密码?