Замена пользователя и email во всех коммитах

Массовая замена имени и email в истории Git-репозитория

1. Проверить всех авторов и их email

git log --format='%an <%ae>' | sort

Выведет список всех уникальных авторов и их email. Используйте этот список, чтобы убедиться, что все нужные данные попадут под замену.


2. Замена имени и email во всех коммитах (через callback)

python -m git_filter_repo --name-callback "return b'New Name'" --email-callback "return b'new@email.com'" --force

Пример:

python -m git_filter_repo --name-callback "return b'John Doe'" --email-callback "return b'john.doe@example.com'" --force

3. Добавить ссылку на удалённый репозиторий

Данный пункт необходим, т.к. после выполнения git_filter_repo связь с удаленным репозиторием удаляется.

git remote add origin https://github.com/yourname/yourrepo.git

Замените на свой адрес удалённого репозитория.


4. Форсированная отправка истории в удалённый репозиторий

git push --force origin main

Установка git-filter-repo

Через pip (универсально, нужен Python):

pip install git-filter-repo

Через Homebrew (macOS):

brew install git-filter-repo

Проверка установки:

python -m git_filter_repo --help

Если появилась справка — всё готово.


Замена только определённых email/имён через файл mailmap

1. Создать файл my-mailmap.txt со строками замены:

New Name <new@email.com> <old@email1.com>
New Name <new@email.com> <old@email2.com>

2. Выполнить фильтрацию:

python -m git_filter_repo --mailmap my-mailmap.txt --force

Важно!


Revision #1
Created 19 June 2025 22:01:16 by Admin
Updated 19 June 2025 22:06:09 by Admin