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

Чтобы изменить автора коммита в Git, но сохранить время предыдущего коммита, можно воспользоваться командой git filter-branch.

Вот подробная инструкция, как выполнить эту операцию:

1. Сначала, создайте резервную копию репозитория, чтобы в случае проблем у вас был доступ к исходным данным.

2. Откройте терминал или командную строку и перейдите в каталог, содержащий ваш репозиторий.

3. Выполните следующую команду:

   git filter-branch -f --env-filter '
   if [ "$GIT_COMMITTER_EMAIL" = "<старый email автора>" ];
   then
       export GIT_COMMITTER_NAME="<новое имя автора>";
       export GIT_COMMITTER_EMAIL="<новый email автора>";
   fi
   if [ "$GIT_AUTHOR_EMAIL" = "<старый email автора>" ];
   then
       export GIT_AUTHOR_NAME="<новое имя автора>";
       export GIT_AUTHOR_EMAIL="<новый email автора>";
   fi' HEAD

В этой команде вы должны заменить <старый email автора> на текущий email автора коммита, <новое имя автора> на новое имя автора и <новый email автора> на новый email автора.

4. Git выполнит операцию переписывания истории, заменяя старые авторы на новых во всех коммитах. Это может занять какое-то время в зависимости от количества коммитов в вашем репозитории.

5. После завершения команды git filter-branch вы должны проверить изменения, чтобы убедиться, что авторы коммитов были изменены правильно. Для этого выполните команду git log и просмотрите историю коммитов.

Примечание: Если вам нужно изменить только имя или только email автора, вы можете использовать только один из блоков if в команде git filter-branch.

6. После проверки изменений вы можете удалить резервную копию, созданную в первом шаге.

Вот как можно выполнить это, если вы находитесь в каталоге резервной копии:

   rm -rf <название каталога с резервной копией>

Теперь у вас должен быть измененный репозиторий с новыми авторами коммитов, но сохраненным временем предыдущих коммитов.