- 在有些时候,我们需要修改已提交作者信息,我们可以通过
git filter-branch
进行修改,下面提供了示例 ,请填入oldName
/oldEmail
/newName
/newEmail
,然后在git仓库中,复制粘贴如下命令
#!/bin/sh
git filter-branch -f --env-filter '
an="$GIT_AUTHOR_NAME"
am="$GIT_AUTHOR_EMAIL"
cn="$GIT_COMMITTER_NAME"
cm="$GIT_COMMITTER_EMAIL"
oldName="old_sssss"
oldEmail="old_sssss@gmail.com"
newName="Peter"
newEmail="Peter@gmail.com"
if [ "$GIT_COMMITTER_EMAIL" = "$oldEmail" ]
then
cn="$newName"
cm="$newEmail"
fi
if [ "$GIT_COMMITTER_NAME" -eq "$oldName" ]
then
cn="$newName"
cm="$newEmail"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$oldEmail" ]
then
an="$newName"
am="$newEmail"
fi
if [ "$GIT_AUTHOR_NAME" -eq "$oldName" ]
then
an="$newName"
am="$newEmail"
fi
export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
'
-
在运行完后终端会告诉你修改了那个分支
如Ref 'refs/heads/main' was rewritten
-
如果已经修改过了,我们可以使用-f选项或手动删除
.git/refs/original/refs
里面的内容重新运行上面的命令 -
最终我们需要在检查没问题后(可通过sourcetree等gitGUI工具去查看修改后的提交)通过命令
git push --force --tags origin 'refs/heads/*'
提交到远端,