Как мне обновить автора коммитов Git в объединенной ветке? - PullRequest
0 голосов
/ 07 июня 2018

Я следовал различным инструкциям по обновлению авторов для коммитов в 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

1 Ответ

0 голосов
/ 07 июня 2018

Используя HEAD в конце командной строки, вы изменили только историю для текущей ветви.Чтобы изменить историю всех ветвей, замените HEAD на -- --all.

Из документации git filter-branch:

Аргументы для git rev-list .Все положительные ссылки, включенные в эти параметры, переписаны.Вы также можете указать такие параметры, как --all, но вы должны использовать --, чтобы отделить их от параметров git filter-branch .

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