Переименование фразы во всех коммитах репозитория git (в подмодулях) - PullRequest
0 голосов
/ 12 ноября 2018

Как мне переименовать фразу для всех предыдущих коммитов в моих подмодулях git?

phrase1 to phrase2

Моя фраза находится в файлах .pack.(Я сократил шестнадцатеричные имена .pack):

$ grep -rnw . -e 'phrase1'
Binary file ./.git/modules/folder1/objects/pack/pack-6170d.pack matches
Binary file ./.git/modules/folder2/modules/objects/pack/pack-934ef.pack matches
Binary file ./.git/modules/folder2/objects/1b/2eeaa matches
Binary file ./.git/modules/folder2/objects/1e/92b8b matches
Binary file ./.git/objects/54/fcce26 matches

Я попытался запустить BFG на репо, но я получил такой вывод:

java -jar bfg-1.13.0.jar -rt expression_file.txt /my_repo/
...
BFG aborting: No refs to update - no dirty commits found??
...

И я попытался запустить BFG с "-аргумент -no-blob-protection ", но я получаю тот же вывод:

...
BFG aborting: No refs to update - no dirty commits found??
...

Мой файл expression_file.txt имеет следующий формат:

phrase1 ==> phrase2

Я рассмотрел использование" ветви фильтра git "но я не уверен, какую команду дать ему, чтобы он переписал эти файлы.

1 Ответ

0 голосов
/ 13 ноября 2018

Просто чтобы ответить на git filter-branch часть вопроса.Вот как вы можете использовать его для замены phrase1 на phrase2 во всех .txt файлах:

git filter-branch -f --tree-filter '
    find . -type f -name '*.txt' -exec sed -i 's/phrase1/phrase2/g' {} +
' --prune-empty --all

Имейте в виду, что это может занять очень много времени.Опция --all выполнит замену во всех филиалах.

...