Перезаписать имя и email в предыдущих коммитах Git
30.12.2023
Если вам требуется перезаписать имя и email в уже зафиксированных коммитах, то вам подойдёт ниже приведённый скрипт.
#!/bin/sh
# Get user params
echo -n "Old email: " && read -r OLD_EMAIL
echo -n "New email: " && read -r NEW_EMAIL
echo -n "New name: " && read -r NEW_NAME
# Update git repo
OLD_EMAIL="$OLD_EMAIL" \
CORRECT_NAME="$NEW_NAME" \
CORRECT_EMAIL="$NEW_EMAIL" \
FILTER_BRANCH_SQUELCH_WARNING=1 \
git filter-branch --env-filter '
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
Запустите скрипт и введите старый email, новый email и новое имя:
Old email: root@lcomrade.su
New email: john.doe@example.org
New name: John Doe
Rewrite d0faaaf915c61c2e60fa8aa2cc4a4c85dc6d356c (3/3) (0 seconds passed, remaining 0 predicted)
Ref 'refs/heads/main' was rewritten
Теперь нужно запушить изменения на удалённый сервер:
git push --force
Содержание