Изменение автора каждого коммита в локальном репозитории с использованием инструмента git filter-repo может выглядеть следующим образом:
#!/bin/bash
authors=("test <test@gmail.com>" "another <another@example.com>")
for commit in $(git rev-list --all); do
author=${authors[$RANDOM % ${#authors[@]}]}
git filter-repo --commit-callback "commit.author_name = '$author'; commit.author_email = '$author'" --path-commit $commit
done
В этом примере массив authors содержит список новых авторов в формате "Имя <адрес-электронной-почты>". Скрипт выбирает случайного автора из этого списка для каждого коммита и использует инструмент git filter-repo для изменения автора коммита.
Алгоритм будет работать медленно, так как весь репозиторий будет перестраиваться на каждом шаге цикла.
Примечание: Убедитесь, что у вас установлена последняя версия git filter-repo, поскольку инструмент может быть доступен как отдельный пакет или как часть Git.
И код я не проверял, не обещаю что он заработает.