git更改特定提交者的提交者姓名和电子邮件的所有历史记录

时间:2014-09-19 17:23:48

标签: git commit git-filter-branch

我如何更改我的所有提交历史记录的名称和电子邮件,但是对于特定的提交者而言......

如果是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

但......之后: 写:git log --pretty = format:"%an" |排序-u 和production251的名称显示..

我找到了新代码:

git filter-branch --force --env-filter' 如果[" $ GIT_COMMITTER_NAME" = dmiguel" ]。 然后     GIT_COMMITTER_NAME =" Diana Miguel&#34 ;;     GIT_COMMITTER_EMAIL =" paola.miguel@ibusplus.com" ;;     GIT_AUTHOR_NAME =" Diana Miguel&#34 ;;     GIT_AUTHOR_EMAIL =" paola.miguel@ibusplus.com" ;; 音响' - --all

这很好吗?或不?将此代码放在终端(ubuntu)之后,需要一些代码adittional?,push还是什么?

1 个答案:

答案 0 :(得分:1)

您丢失了为GIT_COMMITTER_NAME设置的值以及其他设置值和执行git commit-tree之间的值。您需要在同一命令行中完成所有操作,或在它们前面使用export