Как изменить автора коммита для нескольких коммитов, используя ветку фильтра? - PullRequest
2 голосов
/ 07 октября 2019

Я использую этот скрипт, найденный по этой ссылке , чтобы редактировать информацию об авторе во всех коммитах.

#!/bin/sh

git filter-branch --env-filter '

OLD_EMAIL="your-old-email@example.com"
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

Однако я получаю следующую ошибку (предупреждение?):

Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f

Я тоже проверил журнал. Информация об авторе не изменилась. Что я здесь не так делаю?

Обновление: Как упоминалось @ elpiekay , флаг -f заставил скрипт работать.

Но кто-нибудь может объяснить сам журнал ошибок? Почему упоминается о резервном копировании? Я никогда не делал никаких резервных копий ( не уверен, какая резервная копия упоминается в журнале ошибок )

1 Ответ

0 голосов
/ 07 октября 2019

На самом деле, лучшая практика заключается в следующем:

Вместо этого вы можете прямо сейчас использовать его возможного преемника: newren/git-filter-repo (в Python) и его пример раздела :

cd repo
git filter-repo --mailmap my-mailmap

с my-mailmap:

Correct Name <correct@email.com> <old@email.com>

Это заменит имя автора иэлектронная почта любого коммита, сделанного кем-либо с <old@email.com>

См. git shortlog раздел автора картирования для точного синтаксиса

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