2015-09-06 7 views
11

Quindi ho erroneamente commesso il mio secrets.yml nei commit precedenti (yikes !!) e voglio pulire la mia cronologia di commit git di esso. Sembra che il modo più semplice di digiunare sia usare BFG. Ho scaricato il file jar e installato il Java è richiede, e ho creato uno specchio del mio repo - ma quando faccio funzionare l'ordine secondo la documentazione:Errore: impossibile accedere a jarfile bfg.jar - BFG

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

ottengo l'errore Unable to access jarfile bfg.jar

I documenti sono molto carini, ma non specifica se c'è qualcosa che avrei dovuto fare per installarlo o farlo funzionare, o collegato al mio repository mirror, e sono molto confuso. Ho visto un tutorial su youtube che dice che dovrei creare un link simbolico usando un comando come;

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

per eseguire il BFG, tranne che sono incerto ciò che la seconda parte di quel comando si riferisce a (/usr/local/bin/bfg) o dove dovrebbe essere rivolto nel mio caso, come questo non funziona per me AS è. Ho il file jar salvato nella directory root dell'utente. Devo spostarlo? Come faccio a eseguire BFG sul mio mirror repo e dovrei essere all'interno della directory della app del mirror durante l'esecuzione? Oppure eseguirlo dall'esterno dell'app?

risposta

2

From the documentation, dovrebbe essere:

java -jar bfg.jar <options> yourrepo 

cercare di utilizzare il percorso completo del vaso se si dispone di un errore come "Unable to access jarfile bfg.jar": /home/user/path/to/bfg.jar.

If the jars are configured to be run with java, quindi /usr/local/bin/bfg sarebbe il percorso del collegamento simbolico che fa riferimento al vaso bfg corretto.

L'alternativa è descritto in "Remove sensitive data"

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

Or (aggiornamento novembre 2017), come commented da JeremyDouglass,

If you download the latest (e.g. from 1.12.16 , the bfg-1.12.6.jar) and you only want to use standard commands in a local staging directory only (no path, no symlink), then you can simply rename the jar:

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

Grazie VonC, alla fine ho l'ho appena abbandonato e l'ho fatto con 'git filter-branch' come da git docs, avrei dovuto provare il percorso completo, un Sarebbe stato fantastico se avessero coperto un po 'di errori nei documenti, ma tale è la vita. Ho fatto il lavoro a prescindere - ma proverò il percorso completo la prossima volta che cercherò di usare bfg! grazie ancora;) – HolyMoly

+2

@HolyMoly Sono contento che tu abbia funzionato. Ho modificato la risposta per includere l'alternativa 'git filter-branch'. – VonC

+0

grazie per l'aggiornamento con le informazioni di 'git filter-branch' - Sono sicuro che aiuterà gli altri che inciampano su questo (e sembrano ancora trovare la loro strada qui!);) – HolyMoly