Как изменить сообщение любого конкретного коммита?

Рейтинг: 1Ответов: 1Опубликовано: 31.01.2015

Несмотря на большое количество этого вопроса в интернете, нормального решения я так и не нашел. В основном предлагают git rebase -i, но он как-то жестко перелопачивает все последующие коммиты, меняя их дату и порядок в списке, что плохо.
Нашел более-менее оптимальное решение:

git filter-branch -f --msg-filter '
if [ "$GIT_COMMIT" = "$(git rev-parse --verify <коммит>)" ]
then
    echo develop1
else
    sed "s/.*/\0/g"
fi
' -- --all

filter-branch это пакетная команда, и она идет по всем коммитам, из-за чего приходится в передаваемом скрипте анализировать коммит и в случае неудачи вызывать sed "s/.*/\0/g", иначе на все коммиты, кроме заданного, будут установлены пыстые сообщения. Есть ли возможность filter-branch-у задать конкретный коммит, или короче этой записи уже ничего не сделать? Возможно, есть другие способы изменения сообщения?

Ответы

▲ 1

Вы хотите изменить историю (поправить сообщение), не влияя на всю последующую историю (не трогая остальные коммиты). Это в общем-то противоречит идеологии гита.

Самый честный способ - git rebase -i.