-
修改
~/.gitconfig
文件中的user.name
,user.email
. -
将下面的脚本文件
git-user-change.sh
放在需要修改的项目的上一层文件夹中, 脚本的源码中需要修改对应的用户名和邮箱. -
在项目根目录下执行
sh ../git-user-change.sh
便开始自动化重写所有脚本能匹配到的提交信息了. 拥有条件判断的此脚本, 最大的好处便是, 不会覆盖掉团队协作项目中, 他人的提交信息.
下面这条命令会将项目 Git 所有历史里删除对 src.zip 的记录, 整个 .git 文件夹会轻很多.git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch ./src.zip' --prune-empty --tag-name-filter cat -- --all
-
强制更新
git push origin --force
, 如果需要授权, 在 github 上修改 SSH 公钥.
- 下面是
git-user-change.sh
的代码, 保存后执行上面的命令, 其中if
中的判断条件是原来的邮箱,then
中是现在的名字和邮箱.
#!/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" = "willsnowdev@gmail.com" ]
then
cn="shengwei.xu"
cm="shengwei.xu@qq.com"
fi
if [ "$GIT_AUTHOR_EMAIL" = "willsnowdev@gmail.com" ]
then
an="shengwei.xu"
am="shengwei.xu@qq.com"
fi
export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
'