git filter-branch の代わりに BFG を試してください...
ではなくBFGを使用すると、より使いやすい置換形式を使用できます。次のように、1 行に 1 つのパスワードでファイルを作成します。git-filter-branch
passwords.txt
PASSWORD1==>xXxXx # Replace literal string 'PASSWORD1' with 'xXxXx'
ezxcdf\fr$sdd%==>xXxXx # ...all text is matched as a *literal* string by default
次に、次のコマンドで BFG を実行します。
$ java -jar bfg.jar -fi '*.php' --replace-text passwords.txt my-repo.git
リポジトリ履歴全体がスキャンされ、すべての.php
ファイル (サイズが 1MB 未満) に対して置換が実行されます。一致する文字列 (最新のコミットにないもの) は置換されます。
...エスケープは必要ありません
ここで BFG が置換ファイルを使用して行う解析の唯一のビットは、' ==>
' 文字列 (おそらくパスワードには含まれていない) で分割することであり、すべてのテキストはデフォルトで文字どおりに解釈されることに注意してください。
さらに簡潔にしたい場合は==>
、各行の ' ' とその後に続くすべてを削除することができます (つまり、単にパスワードのファイルを用意します)。BFG はデフォルトで各パスワードを文字列 ' ***REMOVED***
' に置き換えます。
BFG は通常、大きなレポで実行するよりも数百倍高速であり、オプションは次の 2 つの一般的なユースケースに合わせて調整されています。git-filter-branch
- 非常に大きなファイルを削除する
- パスワード、資格情報、その他の個人データの削除
完全な開示: 私は BFG Repo-Cleaner の作成者です。