Github предоставляет процедуру для изменения информации об авторе (включая электронную почту) прошлых коммитов .В основном, вы вводите информацию в соответствующем месте в этом скрипте:
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="user@server.local"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
и запускаете ее.Различные варианты описаны в справочной странице, поднятой git help filter-branch
, если вам интересно;вкратце, --env-filter
говорит git, что вы будете изменять переменные окружения, связанные с коммитом, --tag-name-filter cat
говорит, что он не должен изменять содержимое тегов, а --branches
и --tags
говорят git применять изменения к коммитам.которые доступны из всех веток и тегов в вашем хранилище.После этого вы можете проверить историю и принудительно нажать на нее:
git push --force --tags origin 'refs/heads/*'
Выполнение этой команды эффективно удалит и заменит всю историю вашего хранилища на Github.Если люди его разветвляют или клонируют, это создаст для них проблемы, поэтому в этом случае вы можете запустить новый репозиторий с историей, которая у вас есть после выполнения команды, и отказаться от старого.