Fehler: Zugriff auf die JAR-Datei bfg.jar – BFG nicht möglich
Lesezeit: 5 Minuten
Heilige Moly
Also habe ich fälschlicherweise meine secrets.yml in früheren Commits festgeschrieben (yikes!!) und ich möchte meinen Git-Commit-Verlauf davon bereinigen. Es scheint, dass der schnellste und einfachste Weg die Verwendung von BFG ist. Ich habe die JAR-Datei heruntergeladen und das erforderliche Java installiert, und ich habe einen Spiegel meines Repos erstellt – aber wenn ich den Befehl gemäß den Dokumenten ausführe:
Ich bekomme den Fehler Unable to access jarfile bfg.jar
Die Dokumentation ist sehr hübsch, gibt aber nicht an, ob ich etwas hätte tun sollen, um dies zu installieren oder zum Laufen zu bringen, oder ob ich es mit meinem Mirror-Repo verknüpfen sollte, und ich bin ziemlich verwirrt. Ich habe mir ein YouTube-Tutorial angesehen, das besagt, dass ich einen symbolischen Link mit einem Befehl wie dem folgenden erstellen soll:
ln -s ~/bfg-1.11.6.jar /usr/local/bin/bfg
um die bfg auszuführen, außer ich bin mir nicht sicher, worauf sich der zweite Teil dieses Befehls bezieht ( /usr/local/bin/bfg ) oder wohin es in meinem Fall zeigen sollte, da das für mich so wie es ist nicht funktioniert. Ich habe die JAR-Datei in meinem Benutzerstammverzeichnis gespeichert. Muss ich es verschieben? Wie führe ich BFG auf meinem Mirror-Repo aus und sollte ich das tun? Innerhalb das Verzeichnis meiner Mirror-App, wenn ich sie ausführe? Oder führe ich sie von außerhalb der App aus?
Die Angabe des vollständigen Pfads zur .jar-Datei ist der sichere Weg.
Versuchen Sie, den vollständigen Pfad der JAR-Datei zu verwenden, wenn Sie einen Fehler wie “Unable to access jarfile bfg.jar“: /home/user/path/to/bfg.jar.
Oder (Update Nov. 2017), wie von JeremyDouglass kommentiert,
wenn du laden Sie die neuesten herunter (zB von 1.12.16der bfg-1.12.6.jar) und Sie nur Standardbefehle in einem lokalen Staging-Verzeichnis verwenden möchten (kein Pfad, kein Symlink), dann können Sie das JAR einfach umbenennen:
git filter-repo --path secrets.yml --invert-paths HEAD
HEAD bedeutet, dass nur Ihre aktuellen Branch-Commits geändert werden.
Entfernen Sie HEAD und es wird alle Ihre Commits in allen Ihren Zweigen durchgehen.
Danke VonC, ich habe es schließlich einfach aufgegeben und es mit gemacht git filter-branch gemäß den Git-Dokumenten hätte ich den vollständigen Pfad ausprobieren sollen, und es wäre großartig gewesen, wenn sie Fehler in den Dokumenten ein wenig behandelt hätten, aber so ist das Leben. Ich habe die Arbeit trotzdem erledigt – aber ich werde den vollständigen Pfad ausprobieren, wenn ich das nächste Mal versuche, bfg zu verwenden! Danke noch einmal 😉
– HolyMoly
7. September 2015 um 18:46 Uhr
@HolyMoly Ich bin froh, dass es funktioniert hat. Ich habe die Antwort so bearbeitet, dass sie die enthält git filter-branch Alternative.
– VonC
7. September 2015 um 20:08 Uhr
Wenn Sie die neueste Version herunterladen (z bfg-1.11.6.jar) und Sie nur Standardbefehle in einem lokalen Staging-Verzeichnis verwenden möchten (kein Pfad, kein Symlink), dann können Sie das JAR einfach umbenennen: mv bfg-1.11.6.jar bfg.jar dann java -jar bfg.jar --delete-files bad.txt repo.git.
– Jeremy Douglas
1. November 2017 um 8:13 Uhr
@JeremyDouglass Danke. Ich habe Ihren Kommentar zur besseren Sichtbarkeit in die Antwort aufgenommen. Und verwendet 1.12.16 als neustes 😉
– VonC
1. November 2017 um 8:22 Uhr
@Leonif Gehen Sie dann in den Ordner, in den Sie es heruntergeladen haben, und der Befehl mv funktioniert.
– VonC
13. Februar 2020 um 9:28 Uhr
Pradeep Kachhawaha
Sobald Sie BFG installiert haben (z. B. mit brew install BFG), können Sie den BFG-Befehl im Terminal aufrufen.
Hier ist die Befehlszeilenhilfe für BFG:
bfg
bfg 1.13.0
Usage: bfg [options] [<repo>]
-b, --strip-blobs-bigger-than <size>
strip blobs bigger than X (eg '128K', '1M', etc)
-B, --strip-biggest-blobs NUM
strip the top NUM biggest blobs
-bi, --strip-blobs-with-ids <blob-ids-file>
strip blobs with the specified Git object ids
-D, --delete-files <glob>
delete files with the specified names (eg '*.class', '*.{txt,log}' - matches on file name, not path within repo)
--delete-folders <glob> delete folders with the specified names (eg '.svn', '*-tmp' - matches on folder name, not path within repo)
--convert-to-git-lfs <value>
extract files with the specified names (eg '*.zip' or '*.mp4') into Git LFS
-rt, --replace-text <expressions-file>
filter content of files, replacing matched text. Match expressions should be listed in the file, one expression per line - by default, each expression is treated as a literal, but 'regex:' & 'glob:' prefixes are supported, with '==>' to specify a replacement string other than the default of '***REMOVED***'.
-fi, --filter-content-including <glob>
do file-content filtering on files that match the specified expression (eg '*.{txt,properties}')
-fe, --filter-content-excluding <glob>
don't do file-content filtering on files that match the specified expression (eg '*.{xml,pdf}')
-fs, --filter-content-size-threshold <size>
only do file-content filtering on files smaller than <size> (default is 1048576 bytes)
-p, --protect-blobs-from <refs>
protect blobs that appear in the most recent versions of the specified refs (default is 'HEAD')
--no-blob-protection allow the BFG to modify even your *latest* commit. Not recommended: you should have already ensured your latest commit is clean.
--private treat this repo-rewrite as removing private data (for example: omit old commit ids from commit messages)
--massive-non-file-objects-sized-up-to <size>
increase memory usage to handle over-size Commits, Tags, and Trees that are up to X in size (eg '10M')
<repo> file path for Git repository to clean
Für mich hatte das bfg-Jar die Version im Namen (bfg-1.14.0.jar). Ich habe das Glas in bfg.jar umbenannt und mit dem Befehl fortgefahren und es hat funktioniert. Ich weiß, dummer Fehler. Aber hey!
14395900cookie-checkFehler: Zugriff auf die JAR-Datei bfg.jar – BFG nicht möglichyes
Die Angabe des vollständigen Pfads zur .jar-Datei ist der sichere Weg.
– mrk
17. Mai 2022 um 9:19 Uhr