Я бы порекомендовал использовать новый git filter-repo
, который заменяет BFG и git filter-branch
.
Примечание: если вы получаете следующее сообщение об ошибке, когда Выполнение вышеупомянутых команд:
Error: need a version of `git` whose `diff-tree` command has the `--combined-all-paths` option`
это означает, что вам необходимо обновить git
.
Во-первых: сделайте одну копию вашей локальной репо (новый клон)
См. « Фильтрация базы контента »:
В конце вы можете (если вы работаете только с этим хранилищем) a git push --force
Если вы хотите изменить содержимое файла, вы можете сделать это на основе списка выражений в файле, по одному на строку.
Например, с файлом с именем expressions.txt
содержит:
p455w0rd
foo==>bar
glob:*666*==>
regex:\bdriver\b==>pilot
literal:MM/DD/YYYY=>YYYY-MM-DD
regex:([0-9]{2})/([0-9]{2})/([0-9]{4})==>\3-\1-\2
, затем работает
git filter-repo --replace-text expressions.txt
будет go и заменят :
p455w0rd
с ***REMOVED***
, foo
с bar
, - любой строкой, содержащей
666
с пустой строкой, - словом
driver
с pilot
(но не при наличии букв до или после; например, драйвер s не изменится), - точный текст
MM/DD/YYYY
с YYYY-MM-DD
и - строки даты в форме
MM/DD/YYYY
и строки YYYY-MM-DD
.