先声明:该操作会改变历史记录,所以需要谨慎执行,尤其是在团队协作的环境下
首先,打开终端或命令行,并且切换到目标Git仓库目录下
-
定位要修改的commit:找到需要修改的记录的commit ID。
-
使用交互式rebase :如果你要修改的commit不是最近的一次,可以使用以下命令,其中
commit_id
是你要修改的commit的ID的前一个commit的IDgit rebase -i commit_id
如果需要修改的是最近的commit,则可以使用:
git rebase -i HEAD~n
其中n是你需要回退的commit数量
-
选择要修改的commit :在打开的编辑器中,将需要修改的某commit前面的
pick
改为edit
,然后保存并退出编辑器 -
修改用户名和邮箱:现在你可以使用以下命令修改用户名和邮箱:
git commit --amend --author="新用户名 <新邮箱地址>"
-
执行上述命令后会进入一个编辑文档,若需修改commit信息就敲
I
键进入编辑模式,在最上方看到上次的commit内容修改成新的(下方一堆"#"内容不用管),然后分别ESC
,:
,wq
键保存退出,若不修改直接编辑保存退出即可 -
完成rebase:使用以下命令完成rebase过程:
git rebase --continue
如果有更多的commit需要修改,重复步骤4,5和6
-
强制推送到远程仓库:修改完成之后,你需要强制推送到远程仓库。这个操作会覆盖远程仓库的历史,所以需确保这是你想要的结果
git push --force
请记住,在强制推送之前,你应该提醒你的团队成员,因为这将重写远程仓库的历史。所有的团队成员都将需要根据新的历史进行操作,可能包括使用git pull --rebase
来同步本地仓库