问题标签 [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 投票
1 回答
124 浏览

git - BFG 成功运行后使用哪个 repo

我按照我已阅读的使用BFG 回购清洁器的文档进行操作,"It's best to delete all old clones"但不确定是哪一个以及如何删除它。我正在将所有内容推送到 bitbucket。

我现在有 2 个 repos 的目录

我应该删除两个目录并从 bitbucket 中提取所有内容吗?我应该再次镜像吗?或者只是删除/.git并重命名/.myproject.git/ => /.git?

或者是什么...?

0 投票
1 回答
1397 浏览

git - git lfs bfg:在那之后,如何解决冲突?

我们有一个存储库,我们在其中提交了报告的 PDF 快照。我想试试git lfs,看看它是否能提高生活质量。

我按照这里的程序(https://github.com/rtyley/bfg-repo-cleaner/releases)使用 BFG 清理旧的二进制文件并过渡到 lfs。我克服了与将 Gitlab 服务器用于存储库相关的一些问题,但最终我相信这进展顺利。

我写信是为了展示我们做了什么,并在最后提出一个关于清理合并冲突的问题。

我给你看成绩单。我们检查了一个“--mirror”克隆(一个裸仓库),BFG 对此进行了工作,然后我们在摆弄之后将其推回:

如果你尝试这个,你应该准备好在推回 repo 时遇到一些麻烦。一个问题是 8.12 之前的 Gitlab 没有在 git 的 SSH 传输和 git lfs 的 HTTPS 传输之间集成密码管理。另一个问题是 Gitlab 项目的“保护”,如果你使用 Gitlab,你可能已经看到了。我第一次推送时看到了这个:

我们做了一些改变来解决这个问题。我们需要绝对最新版本的 Gitlab (8.12.4)。我需要告诉 Git 忽略过期的证书。在 Gitlab 服务器上,项目必须“不受保护”,以便开发人员可以推送。我不明白为什么这是必要的,因为我是所有者,我可以推送定期的 git 更改,但显然 lfs 集成是不同的。大惊小怪之后,我们成功地推回了存储库:

成功!

然后我回到这个存储库的工作目录,其中保存了 PDF 文件,并尝试了 git pull。我看到很多我必须解决的合并冲突:

我可能只是对遥控器进行一个干净的克隆,然后从那里继续。我在 Internet 上找到的说明对此没有太大帮助,它们主要是关于 lfs 的入门,而不是关于处理正在进行的 lfs 和 lfs 的克隆。我有点担心如果有人克隆了这个东西而他们没有 lfs 会发生什么。哦,好吧,我们拭目以待。

这是我的问题。如果我确实想处理所有这些二元冲突,我会怎么做?如果我只是想接受来自服务器的所有更改,看来我只需要一遍又一遍地运行它,为每个冲突的“fn.pdf”运行一次。

一遍又一遍地这样做似乎很乏味,但我想我可以做到。

我还在这里找到了建议(解决与二进制文件的 Git 冲突)尝试

但我无法确定如何与之交互。diff 东西启动了一个带有 3 列缓冲区的 gvim 框架,但我没有成功导航它。在我看来,这让我陷入了编辑地狱。

0 投票
1 回答
287 浏览

bitbucket - 如何将现有的 Git-p4 存储库迁移到 LFS

此刻,我有一个Git同步到主p4仓库并且工作正常的仓库。但它的大小远远超过 4Gb。我们需要将它移动到BitBucket,其中 2Gb 是最大限制。我想要达到的目标:

  1. 将 1 个文件夹和 1 个文件扩展名放在 LFS 下。
  2. 将 repo 迁移到BitBucket
  3. 使其与 p4 depot 双向同步。

第 1 点的假设是使用BFG Repo 清洁器。适合文件夹吗?
是否有可能达到第 3 点?

0 投票
1 回答
1149 浏览

git - BFG 正在删除所有敏感内容,但在倒数第二次提交中

我试图从我的历史记录中删除包含秘密 API 令牌和一些端点的文件中的几行,这些端点作为环境变量传递比在那里硬编码要好得多,所以如果我有一天将回购公开,他们将不会在那里轻率的眼睛。

为此,我使用了 BFG 存储库清理器这个很棒的工具,我过去也使用它从我的 git 历史记录中删除整个残留和敏感文件。这次按照说明替换文本:

但在输出中,出现了:

所以我就这么做了,克隆了整个东西,提交了替换我想要os.environ[]在 python 上调用 2 次的两行并推送它。然后我再次运行 BFG,git reflog一切似乎都像一个魅力。

我检查了 gitlab 的提交浏览器,文本***REMOVED***到处都是,但在倒数第二个提交中,发生了这种情况:

图像

我猜它的发生是因为文件在下一次提交中被编辑(现在是受“HEAD”保护的那个),GIT 需要这些令牌来重新创建我所做的更改以摆脱这 2 行。但是,我该如何实现呢?

0 投票
2 回答
1843 浏览

git - git svn fetch 在 bfg 清理后给出“无效的修订范围”“错误:128”

我有一个使用 git-svn 从 SVN 迁移的 Git 存储库。我曾经git svn fetch从 SVN 获得最新的提交。我想将 repo 推送到 GitHub,但是历史记录中有一些大于 100 MB 的文件我必须删除,所以我使用bfg repo clean来删除它们。

如何在不重新初始化整个存储库的情况下使其工作,因为我不希望这些文件再次出现在历史记录中(它们超出了 GitHub 的限制)?有什么方法可以重新计算哈希或让它忽略不匹配?

0 投票
2 回答
557 浏览

git - BFG 之后的 git 笔记?

我从 SVN 迁移到 git,并且在每个 git 提交中都有一个注释,引用了 SVN 修订号。在 repo 导入后,我使用 BFG repo 清洁器从二进制文件和其他垃圾中清除 git 历史记录。不幸的是,现在我在键入时看不到注释git log。我想 BFG 忘记更新注释提交的引用。BFG 留下一个 *.txt 报告,将旧对象 ID 映射到新对象 ID,格式如下:

鉴于上述映射,您能否建议一些脚本来快速修复注释?

PS:我几乎可以肯定问题是由未更新的参考文献引起的,因为当我输入git notes第二位时,我可以看到在 BFG 报告中被认为是旧的参考文献object-id-map.old-new.txt

0 投票
1 回答
481 浏览

git - 使用 BFG 清理 git 历史记录

当我最近尝试将我的提交推送到 github 时,我收到了与这个问题相同的错误消息。我从存储库中删除了文件,但现在必须清理历史记录。正如我在答案中所建议的那样,我研究了 BFG,这似乎是解决方案。在阅读说明时,它从 using 开始git --mirror link-to-remote-repo

现在我想知道,因为我还不能推送最新的提交,而且我的本地提交历史可能比 github 上的要长。此外,我不确定我所做的所有工作都是在分支上而不是在 master 上,以及它如何影响我的存储库。

0 投票
0 回答
223 浏览

git - bfg 或 filter-branch 以更正历史记录

我在这里找到了这个答案: Duplicate commits after filter-branch to move root directory

这可能是我最初应该做的。我有一个像这样的回购:

我希望“project/”成为我项目的根。我完全忘记了我最终以“project/”为根做了什么。所以我有一个提交,就像

从技术上讲,我有完整的历史,但是“大动作”把它搞砸了,例如,如果git log something我得到:

但显然我在大动作之前有变化。是否有可能过滤分支或 bfg 我的出路?

0 投票
1 回答
1321 浏览

git - Why can I still see files in GitHub history after cleaning them with the BFG?

I am working on a group project and I want to remove a file from all memory. The content, the file name, everything! I don't want any trace of this left on the Git repo. I have been trying to do this using bfg but I can still find the file on the Github page using it's "browse the repository at this point in history feature".

The directory which is the git repo is .../electricity_profiles and within the directory electricity_profiles/data there was the file I want to remove (I've tried bfg --delete-files .~lock.smart_meter_data_overlap.csv#). I have removed it from the current commit since, but it is a few commits back commit 5c50c67d1be4e869bc75fb7d3916b9fc814b8106.

How can I remove all evidence this file ever existed, even on github, and so when other people pull the file they won't see it?

I have looked at:

but haven't figured it out yet.

Work done so far: (Seems to work).

Console output:

finishing off the process.

Looking at the Github repo it seems to have worked.

0 投票
1 回答
390 浏览

git - BFG:从旧(预清理)到新哈希的映射

我们使用 git 哈希来指向特定的修订,例如,在问题跟踪系统中。使用 BFG 清理 repo 时,所有/许多哈希都会更改,因此信息会丢失。

BFG 作为清理 repo 的一部分,能否生成新旧修订哈希之间的映射?