git изменить всю историю для имен коммиттеров и электронной почты для конкретного коммиттера

Как я не могу изменить имя и адрес электронной почты для всей моей истории коммитов, кроме конкретного коммитера ..

что-то вроде foreach allcommit, если committer_name = "Hugo Casa" изменить: committer_name committer_email author_name author_email

и после этого нажмите и обновите данные истории.

пожалуйста, помогите, я ищу и нашел это:

git filter-branch --commit-filter '
        if [ "$GIT_COMMITTER_NAME" = "production251" ];
        then
                GIT_COMMITTER_NAME="Hugo Casanova";
                GIT_AUTHOR_NAME="Hugo Casanova";
                GIT_COMMITTER_EMAIL="hugo.casanova.ibusplus.com";
                GIT_AUTHOR_EMAIL="hugo.casanova.ibusplus.com";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi' HEAD


git filter-branch --env-filter '
    oldname="(old name)"
    oldemail="(old email)"
    newname="(new name)"
    newemail="(new email)"
    [ "$GIT_AUTHOR_EMAIL" = "$oldemail" ] && GIT_AUTHOR_EMAIL="$newemail"
    [ "$GIT_COMMITTER_EMAIL" = "$oldemail" ] && GIT_COMMITTER_EMAIL="$newemail"
    [ "$GIT_AUTHOR_NAME" = "$oldname" ] && GIT_AUTHOR_NAME="$newname"
    [ "$GIT_COMMITTER_NAME" = "$oldname" ] && GIT_COMMITTER_NAME="$newname"
    ' HEAD

но ... после этого: write: git log --pretty = format: "% an" | sort -u и название продукции251 показать ..

я нашел новый код:

git filter-branch --force --env-filter 'if ["$ GIT_COMMITTER_NAME" = dmiguel "]; then GIT_COMMITTER_NAME =" Diana Miguel "; GIT_COMMITTER_EMAIL =" [email protected] "; GIT_AUTHOR_NAME =" Diana Miguel " ; GIT_AUTHOR_EMAIL = "[email protected]"; fi '- - все

это хорошо? или не? после того, как поместите этот код на терминал (ubuntu), нужен дополнительный код ?, push или что-то в этом роде?


person Hugo Casanova    schedule 19.09.2014    source источник


Ответы (1)


Вы теряете значения, которые вы установили для GIT_COMMITTER_NAME и других, в промежутке между их установкой и выполнением git commit-tree. Вам нужно либо сделать все это в одной командной строке, либо использовать export перед ними.

person Andrew C    schedule 19.09.2014