Fehler: Zugriff auf die JAR-Datei bfg.jar – BFG nicht möglich

Lesezeit: 5 Minuten

Benutzeravatar von HolyMoly
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:

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

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.

    – mrk

    17. Mai 2022 um 9:19 Uhr

Benutzeravatar von VonC
VonC

2015: Aus der Dokumentationes sollte sein:

java -jar bfg.jar <options> yourrepo

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.

Wenn die JAR-Dateien so konfiguriert sind, dass sie mit javadann /usr/local/bin/bfg wäre der Pfad des Symlinks, der auf das rechte bfg-Jar verweist.

Die Alternative ist beschrieben in “Entfernen Sie sensible Daten

git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch Rakefile' \
--prune-empty --tag-name-filter cat -- --all

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:

mv bfg-1.12.16.jar bfg.jar 
java -jar bfg.jar --delete-files bad.txt repo.git

2019-2020: In jüngerer Zeit würden Sie jetzt verwenden Sie sollten verwenden git filter-repo (das habe ich hier erwähnt).

Installieren Sie es zuerst. (python3 -m pip install --user git-filter-repo)

Dann mit a pfadbasierter Filter:

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

Benutzeravatar von Pradeep Kachhawaha
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!

1439590cookie-checkFehler: Zugriff auf die JAR-Datei bfg.jar – BFG nicht möglich

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy