首页 > 挨踢(IT), 日拱一卒 > 修改 Git 提交日志的作者信息

修改 Git 提交日志的作者信息

2016年2月18日 发表评论 阅读评论 584 人阅读    

这两天遇到一个问题,需要修改一下 Git 提交日志中的作者名称以及电子邮件。好吧,D瓜哥承认,这个需
求很奇葩。原以为不能搞,上网查了一下,可以搞。直接上代码:

#
# D瓜哥,http://www.diguage.com
#

git filter-branch -f --env-filter "
    GIT_AUTHOR_NAME='diguage'
    GIT_AUTHOR_EMAIL='leejun119@gmail.com'
    GIT_COMMITTER_NAME='diguage'
    GIT_COMMITTER_EMAIL='leejun119@gmail.com'
  " HEAD

如果需要选择一部分用户来调整,则可以这样如下:

#
# D瓜哥,http://www.diguage.com
#

git filter-branch --commit-filter '
    if [ "$GIT_COMMITTER_NAME" = "lijun" ];
    then
        GIT_COMMITTER_NAME="diguage";
        GIT_AUTHOR_NAME="diguage";
        GIT_COMMITTER_EMAIL="leejun119@gmail.com";
        GIT_AUTHOR_EMAIL="leejun119@gmail.com";
        git commit-tree "$@";
    else
        git commit-tree "$@";
    fi' HEAD~3..HEAD

注意:命令最后 HEAD~3..HEAD 用于指出需要修改的记录范围。

在查看资料是,Stock Overflow 上的一个回答说 Github 的一种搞法是这样的:

#
# D瓜哥,http://www.diguage.com
#

git filter-branch --env-filter '
    an="$GIT_AUTHOR_NAME"
    am="$GIT_AUTHOR_EMAIL"
    cn="$GIT_COMMITTER_NAME"
    cm="$GIT_COMMITTER_EMAIL"

    if [ "$GIT_COMMITTER_EMAIL" = "lijun@diguage.com" ]
    then
        cn="diguage"
        cm="leejun119@gmail.com"
    fi
    if [ "$GIT_AUTHOR_EMAIL" = "lijun@diguage.com" ]
    then
        an="diguage"
        am="leejun119@gmail.com"
    fi

    export GIT_AUTHOR_NAME="$an"
    export GIT_AUTHOR_EMAIL="$am"
    export GIT_COMMITTER_NAME="$cn"
    export GIT_COMMITTER_EMAIL="$cm"
  ' HEAD~2..HEAD

最后,再提醒一句,D瓜哥在测试的时候发现,一个库修改一次很顺利。如果修改第二次则需要在最后一个的
前面加上参数 -f

参考资料



作 者: D瓜哥,https://www.diguage.com/
原文链接:https://wordpress.diguage.com/archives/140.html
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。

分类: 挨踢(IT), 日拱一卒 标签: ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.