Использование git-filter-branch
.
git filter-branch --commit-filter 'if [ "$GIT_AUTHOR_NAME" = "Josh Lee" ];
then export GIT_AUTHOR_NAME="Hobo Bob"; export GIT_AUTHOR_EMAIL=hobo@example.com;
fi; git commit-tree "$@"'
Это влияет только на автора, а не на коммиттера (который для большинства коммитов будет таким же, как и автор).Если вы также хотите переписать их, установите переменные GIT_COMMITTER_NAME
и GIT_COMMITTER_EMAIL
.
Применяется стандартное предупреждение о переписывании истории;делайте это только с историей, которая еще не была передана.
Обновление за июнь 2018 года
Теперь в руководство включено решение с использованием --env-filter
в его примерах: https://git -scm.com/docs/git-filter-branch#_examples:
git filter-branch --env-filter '
if test "$GIT_AUTHOR_EMAIL" = "root@localhost"
then
GIT_AUTHOR_EMAIL=john@example.com
fi
if test "$GIT_COMMITTER_EMAIL" = "root@localhost"
then
GIT_COMMITTER_EMAIL=john@example.com
fi
' -- --all