Я следовал различным инструкциям по обновлению авторов для коммитов в Git, но мне не удалось обновить автора для ранее объединенной ветви.
Вот как выглядит история коммитов:
A - B - C - D - E - F - G
\ 1 - 2 - 3 - 4 - 5 - 6...
Пока мне удалось переписать авторов верхней ветки.Хотя это не так легко найти: в чем-то вроде Gitlab, если вы просматриваете коммит C, а затем несколько раз переходите по ссылкам на родительский коммит, вы в конечном итоге найдете коммиты, которые Автор не обновил в коммитах 3, 4, 5 и т. Д.
Как я могу обновить их?
Сценарий, который я запустил для обновления большинства коммитов, был:
git filter-branch -f --commit-filter '
if [ "$GIT_AUTHOR_NAME" = "OLD-USER" ];
then
GIT_COMMITTER_NAME="NEW-USER";
GIT_AUTHOR_NAME="NEW-USER";
GIT_COMMITTER_EMAIL="NEW-EMAIL";
GIT_AUTHOR_EMAIL="NEW-EMAIL";
git commit-tree "$@";
else
git commit-tree "$@";
fi' HEAD
Редактировать
Благодаря Ответ Грега Хьюгилла, приведенный ниже скрипт исправил
git filter-branch -f --commit-filter '
if [ "$GIT_AUTHOR_NAME" = "OLD-USER" ];
then
GIT_COMMITTER_NAME="NEW-USER";
GIT_AUTHOR_NAME="NEW-USER";
GIT_COMMITTER_EMAIL="NEW-EMAIL";
GIT_AUTHOR_EMAIL="NEW-EMAIL";
git commit-tree "$@";
else
git commit-tree "$@";
fi' -- --all