如何快速批量修改 Git 提交记录中的用户信息

 
 

beaea6d3c132e29d7891488a01ca948b.gif

 
 

fa7e977dfcfd1072cc4c1096970e8856.jpeg

 
 
 
 
 
 
 
 
 
 
转自:「Frytea's Blog」
原文:https://url.hi-linux.com/MEm0

内网提交需要校验企业邮箱,但有时邮箱设置错误导致 commit 的邮箱有问题,此时可以通过修改已提交记录中的邮箱来修复,无需重新提交。

经过检索,发现两种方法,分别适用于修改一次和修改多次,引文在最后都有注明。

修改最近一次提交的邮箱

$ git commit --amend --author="NewAuthor <NewEmail@address.com>"

批量修改邮箱

使用该脚本,替换其中 [Your Old Email] [Your New Author Name] [Your New Email] 之后在 git 目录中执行即可。

#!/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"

Q&A

  • A previous backup already exists in refs/original/

Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f

出现这一句说明之前曾经执行过 git filter-branch ,在 refs/original/ 有一个备份,这个时候只要删掉那个备份即可,删除备份命令为:

$ git update-ref -d refs/original/refs/heads/master
# 或
$ git filter-branch -f --tree-filter -f 'rm -f test' -- --all

参考文献

  • git 修改提交作者和邮箱

  • git 修改历史提交的用户名和邮箱

cd319092750e3917cb9163d23868e744.gif

 
 

10T 技术资源大放送!包括但不限于:Linux、虚拟化、容器、云计算、网络、Python、Go 等。在 开源Linux 公众号内回复 10T,即可免费获取!

Linux学习指南
有收获,点个在看
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值