Если вам нужно изменить старое сообщение о коммите в нескольких ветвях (то есть, коммит с ошибочным сообщением присутствует в нескольких ветвях), вы можете использовать
git filter-branch -f --msg-filter 'sed "s/<old message>/<new message>/g"' -- --all
, чтобы заменить сообщение фиксации.
Git создаст временный каталог для перезаписи и дополнительно создаст резервную копию старых ссылок в refs / original /.
-f
принудительно выполнит операцию. Это необходимо, если временный каталог уже существует или если уже есть ссылки, хранящиеся в refs / original . Если это не так, вы можете сбросить этот флаг.
--
отделяет параметры ветви фильтра от параметров ревизии
--all
убедится, что все ветви и теги переписаны.
Благодаря резервному копированию ваших старых ссылок вы можете легко вернуться к состоянию перед выполнением команды.
Скажем, вы хотите восстановить своего мастера и получить к нему доступ в ветке old_master:
git checkout -b old_master refs/original/refs/heads/master
После того, как вы удовлетворены изменениями, используйте
мерзавец -f
отправить изменения в ваш публичный репо.
Обратите внимание, что вы должны сообщить об этом своим соавторам, поскольку все хеши коммитов, начиная с первого измененного, были изменены.