hughfenghen / hughfenghen.github.io

blog
https://hughfenghen.github.io/
42 stars 2 forks source link

shell 脚本批量修改 Git 提交记录的用户名、邮箱 #178

Open hughfenghen opened 10 months ago

hughfenghen commented 10 months ago
git filter-branch -f --env-filter '
an="$GIT_AUTHOR_NAME"
am="$GIT_AUTHOR_EMAIL"
cn="$GIT_COMMITTER_NAME"
cm="$GIT_COMMITTER_EMAIL"

if [ "$GIT_COMMITTER_EMAIL" = "<误提交记录的邮箱>" ]
then
    cn="<替换成目标用户名>"
    cm="<替换成目标邮箱>"
fi
if [ "$GIT_AUTHOR_EMAIL" = "<误提交记录的邮箱>" ]
then
    an="<替换成目标用户名>"
    am="<替换成目标邮箱>"
fi

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

⚠️ 危险警告:然后 强制 push git push -f注意不要覆盖别人的提交记录。


示例,张三 替换 李四

git filter-branch -f --env-filter '
an="$GIT_AUTHOR_NAME"
am="$GIT_AUTHOR_EMAIL"
cn="$GIT_COMMITTER_NAME"
cm="$GIT_COMMITTER_EMAIL"

if [ "$GIT_COMMITTER_EMAIL" = "zhangsan@gmail.com" ]
then
    cn="lisi"
    cm="lisi@gmail.com"
fi
if [ "$GIT_AUTHOR_EMAIL" = "zhangsan@gmail.com" ]
then
    an="lisi"
    am="lisi@gmail.com"
fi

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

git push -f