git修改提交作者和邮箱

转载的这篇文章:https://blog.csdn.net/diu_brother/article/details/51982993
作用一名程序员,我们会经常混迹与不同的代码仓库,时常不同仓库会有作者信息验证。比如公司内建的gitlab一般会要求统一使用公司内部的域账号签名;github要求使用github账号签名等。因此,很容易犯在不同库中提交代码发现默认配置的author信息没有变更,结果push被拒绝。

下面介绍几种常用的解决方式,当然最终还是需要养成切换代码库检查author信息的习惯,主动配置

// 设置全局
git config --global user.name "Author Name"
git config --global user.email "Author Email"

git config --global user.name "小旋风"
git config --global user.email "1945605733@qq.com"

// 或者设置本地项目库配置
git config user.name "Author Name"
git config user.email "Author Email"

git config user.name "小旋风"
git config user.email "1945605733@qq.com"

如果是多个修改,那么就需要使用到git filter-branch这个工具来做批量修改
为了方便大家使用,封装了一个简单的shell脚本,直接修改[XXX]中的变量为对应的值即可

创建脚本需要的命令链接

新建一个.sh文件:
命令:touch test.sh

编辑文件:
命令:vi test.sh
然后键入i,输入内容,
然后键入esc
键入:wq保存退出

给test.sh赋予可执行权限
命令:chmod +x test.sh 


执行脚本./test.sh,即可执行脚本
也可以通过sh test.sh 执行脚本
脚本内容
#!/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 Old Email]" ]
then
    cn="[Your New Author Name]"
    cm="[Your New Email]"
fi
if [ "$GIT_AUTHOR_EMAIL" = "[Your Old Email]" ]
then
    an="[Your New Author Name]"
    am="[Your New Email]"
fi

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

这是我使用的脚本,替换上面脚本的时候记得把中括号 [] 去掉
我就是没有把中括号去掉,踩了半个小时坑

#!/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 Old Email" ]
then
    cn="小旋风"
    cm="1945605733@qq.com"
fi
if [ "$GIT_AUTHOR_EMAIL" = "Your Old Email" ]
then
    an="小旋风"
    am="1945605733@qq.com"
fi

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

通过git push --force强行推送修改后的 log 信息。


posted @ 2021-05-26 01:00  _否极泰来  阅读(756)  评论(0编辑  收藏  举报