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

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

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

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

01#
03#
04 
05git filter-branch -f --env-filter "
06    GIT_AUTHOR_NAME='diguage'
07    GIT_AUTHOR_EMAIL='leejun119@gmail.com'
08    GIT_COMMITTER_NAME='diguage'
09    GIT_COMMITTER_EMAIL='leejun119@gmail.com'
10  " HEAD

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

01#
03#
04 
05git filter-branch --commit-filter '
06    if [ "$GIT_COMMITTER_NAME" = "lijun" ];
07    then
08        GIT_COMMITTER_NAME="diguage";
09        GIT_AUTHOR_NAME="diguage";
10        GIT_COMMITTER_EMAIL="leejun119@gmail.com";
11        GIT_AUTHOR_EMAIL="leejun119@gmail.com";
12        git commit-tree "$@";
13    else
14        git commit-tree "$@";
15    fi' HEAD~3..HEAD

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

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

01#
03#
04 
05git filter-branch --env-filter '
06    an="$GIT_AUTHOR_NAME"
07    am="$GIT_AUTHOR_EMAIL"
08    cn="$GIT_COMMITTER_NAME"
09    cm="$GIT_COMMITTER_EMAIL"
10 
11    if [ "$GIT_COMMITTER_EMAIL" = "lijun@diguage.com" ]
12    then
13        cn="diguage"
14        cm="leejun119@gmail.com"
15    fi
16    if [ "$GIT_AUTHOR_EMAIL" = "lijun@diguage.com" ]
17    then
18        an="diguage"
19        am="leejun119@gmail.com"
20    fi
21 
22    export GIT_AUTHOR_NAME="$an"
23    export GIT_AUTHOR_EMAIL="$am"
24    export GIT_COMMITTER_NAME="$cn"
25    export GIT_COMMITTER_EMAIL="$cm"
26  ' HEAD~2..HEAD

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

参考资料



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

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