ich bfg bin mit ein paar Unterverzeichnisse von einem (Klon) Git Repository zu entfernen:git: --prune leer nach bfg Duplikate mit begeht
java -jar bfg-1.12.12.jar --delete-folders {folder1,folder2,folder3} --no-blob-protection myrepo.git/
git reflog expire --expire=now --all && git gc --prune=now --aggressive
Dies funktioniert OK, aber nachdem ich bfg verwendet haben, ich habe viele leere Commits (dh mit schönen Log-Nachrichten, aber ohne Änderungen, weil sie nur Dateien berührten, die jetzt entfernt wurden).
So wie nächsten Schritt habe ich versucht,
git filter-branch --commit-filter 'git_commit_non_empty_tree "[email protected]"' HEAD
oder
git filter-branch --prune-empty --tag-name-filter cat -- --all
Beide Versionen die gewünschte Wirkung nicht zu verwenden (leer Commits zu entfernen).
Stattdessen, was ich am Ende mit ist ein Repository, in dem (siehe Screenshot unten, links vor dem Beschneiden ist, richtig ist nach):
- ein paar leeren Commits entfernt wurden
- leerste Commits bleiben
- nicht leer Commits werden in getrennten Zügen der Commits
Irgendwelche Ratschläge?
Wie haben Sie 'myrepo.git' erstellt - ist es ein Bare/Mirror-Repository gemäß den BFG-Richtlinien? – javabrett
Ich benutze 'git Klon - Spiegel https: //: @git ....'. Ist das der richtige Weg? – fuenfundachtzig
Ja. Haben Sie auch zurück zu Ihrer "Herkunft" gegriffen und diese erneut geholt, bevor Sie mit "Filter-Verzweigung" begonnen haben? – javabrett