错误:无法访问jarfile bfg.jar - BFG

Hol*_*oly 12 git jar

所以我在之前的提交中错误地提交了我的secrets.yml(yikes !!)并且我想清理我的git提交历史.似乎禁食最简单的方法是使用BFG.我已经下载了jar文件并安装了Java是必需的,并且我创建了一个我的repo的镜像 - 但是当我按照文档运行命令时:

java -jar bfg.jar --delete-files secrets.yml my-repo.git

我收到了错误 Unable to access jarfile bfg.jar

文档非常漂亮,但没有说明我应该做些什么来安装它或让它运行,或链接到我的镜像仓库,我很困惑.我看了一个youtube教程,说我应该使用像这样的命令创建一个符号链接;

ln -s ~/bfg-1.11.6.jar /usr/local/bin/bfg

运行bfg,除了我不确定该命令的第二部分是指(/usr/local/bin/bfg)或它应该指向我的情况,因为这对我来说不起作用.我将jar文件保存在用户根目录中.我需要搬家吗?如何在镜像仓库上运行BFG,运行时我是否应该镜像应用程序目录中?或者从应用程序外部运行它?

Von*_*onC 7

2015:从文档中,它应该是:

java -jar bfg.jar <options> yourrepo
Run Code Online (Sandbox Code Playgroud)

如果出现“ Unable to access jarfile bfg.jar”之类的错误,请尝试使用 jar 的完整路径/home/user/path/to/bfg.jar

如果 jar 配置为使用 java 运行,那么/usr/local/bin/bfg将是引用正确 bfg jar 的符号链接的路径。

替代方法在“删除敏感数据”中描述

git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch Rakefile' \
--prune-empty --tag-name-filter cat -- --all
Run Code Online (Sandbox Code Playgroud)

或者(2017 年 11 月更新),正如JeremyDouglass评论的,

如果你下载最新的(例如,从16年1月12日,中bfg-1.12.6.jar),你只需要在本地临时目录只(没有路径,没有符号连接)使用标准的命令,那么你可以简单地重命名的jar:

mv bfg-1.12.16.jar bfg.jar 
java -jar bfg.jar --delete-files bad.txt repo.git
Run Code Online (Sandbox Code Playgroud)

2019-2020:最近,您现在将使用 You should use git filter-repo(我在此处提到的)。

首先安装它。( python3 -m pip install --user git-filter-repo)

然后,使用基于路径的过滤器

git filter-repo --path secrets.yml --invert-paths HEAD
Run Code Online (Sandbox Code Playgroud)

HEAD 意味着它只会更改您当前的分支提交。
删除 HEAD,它将检查您所有分支中的所有提交。

  • @HolyMoly 很高兴你成功了。我已经编辑了答案以包含“git filter-branch”替代方案。 (2认同)