有个工程提交在github上,之后要迁移到公司的gitali: gitlab.alibaba-inc.com上。因为安全的原因,在github上配置的 user.name 和 user.email 不能在gitali上使用。结果向gitali上push都会提示invalid user.email,需要重新git config来配置user.name和user.email,用gitali提供的git-m修改user.email也不可以。之后在stack overflow上看到一个脚本,通过git filter-branch来修改之前已经提交N次的user.name和user.email。
在win下安装git要把相应的linux命令同时安装就可以运行了。或者使用win标准语句:
注意:在执行前把Old Name/New Name;New Email改为你git环境中相应的配置。
在github中也有一个方案,使用git filter-branch --env-filter的方式: https://help.github.com/articles/changing-author-info
git filter-branch --commit-filter '
if [ "$GIT_COMMITTER_NAME" = "<Old Name>" ];
then
GIT_COMMITTER_NAME="<New Name>";
GIT_AUTHOR_NAME="<New Name>";
GIT_COMMITTER_EMAIL="<New Email>";
GIT_AUTHOR_EMAIL="<New Email>";
git commit-tree "$@";
else
git commit-tree "$@";
fi' HEAD
在win下安装git要把相应的linux命令同时安装就可以运行了。或者使用win标准语句:
git filter-branch --commit-filter "
if [ "$GIT_COMMITTER_NAME" = "<Old Name>" ];
then
GIT_COMMITTER_NAME="<New Name>";
GIT_AUTHOR_NAME="<New Name>";
GIT_COMMITTER_EMAIL="<New Email>";
GIT_AUTHOR_EMAIL="<New Email>";
git commit-tree "$@";
else
git commit-tree "$@";
fi" HEAD
注意:在执行前把Old Name/New Name;New Email改为你git环境中相应的配置。
在github中也有一个方案,使用git filter-branch --env-filter的方式: https://help.github.com/articles/changing-author-info