批量修改git中已提交Commit中的Author和Email

实际项目中,因为项目成员有时候会换电脑,所以git的author以及email信息不一定保持一致,结果导致在提交记录中同一个人会有不同的名字……简直不能忍啊……

找了一下,这个方法看上去是靠谱的

#!/bin/sh

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" = "your@email.to.match" ]
then
    cn="Your New Committer Name"
    cm="Your New Committer Email"
fi
if [ "$GIT_AUTHOR_EMAIL" = "your@email.to.match" ]
then
    an="Your New Author Name"
    am="Your New Author Email"
fi

export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
'

跑起来,慢是慢了点……0.5s一个commit吧,当前项目1000多个commits是要跑一段时间的,不过确实有效~
干干净净真开心!强迫型人格障碍患者福利~


啊啊 被坑了啊!!!

进行这样的操作以后,之前所有的Commit都变成双份了,hash值都不一样,我不清楚是我操作的问题还是什么问题……反正这种方案暂且存疑T T