最近因为疫情原因,一直在居家办公。在提交代码的时候,没注意公司仓库与个人仓库的区分,提交公司代码时使用了个人仓库的用户名。所以就需要修改已push代码的用户名和邮箱。

先看下没修改之前的,其中头像显示不出来的,就是我的个人仓库用户名,是需要修改的。

 

接下来说下操作步骤。在进行操作之前,需要保证你本地的代码都是已提交了的。 可以通过git status查看,确保能看到nothing to commit, working tree clean 的字样。如果有没有提交的,就先 执行下 git add 和 git commit。保证工作区是干净的。

 

1、纠正仓库的用户名和邮箱

在项目的根目录,执行下面的命令,把用户名和邮箱纠正过来

git config user.name “你的正确用户名”

git config user.email “你的正确邮箱”

 

2、git rebase -i HEAD~n 命令,用于修改提交。

其中的n是数字,代表你要修改哪一次。1代表最近一次提交,2代表倒数第二次提交,依次类推。比如,我最近有22次的用户名信息不对,我就是执行的 git rebase -i HEAD~22。

 

3、标记需要修改的分支

执行了git rebase -i HEAD~22命令后,终端会给我们列出最近的22次提交,和一些相关命令的操作提示,大概样子如下(注意这里的展示顺序,靠上的是最早的提交,靠下的是最近的提交):

这只是展示,但不能编辑,这个时候,我们把输入法切换为英文输入法,然后按一下键盘上的 i 键(即inser,插入的意思,表示进入界面编辑状态),我们就可以编辑这里了。

我们是需要修改提交信息,所以就需要把想修改的提交前面的pick 改成edit。像我图上那样即可,其它的都不要动,你可以改一个,也可以同时改多个。改好之后,按下esc键,退出编辑状态,接着输入:wq,表示保存退出,再按enter结束。  这个时候,我们就等于是对想修改的commit进行了标记。接着往下执行。

4、正式修改分支

执行命令:git rebase –amend –author=”你想改回的名字 <你想改回的邮箱>” –no-edit,比如我执行的就是

执行这样一个命令后,你第一个标记为edit的commit的用户和邮箱就已经改掉了。

接着执行命令:git rebase –continue。

 

如果你只是标记了一个edit,到这里就算结束了,但如果你标记了多个edit,上面的操作只是修改了最早的一次提交的,剩下的还没修改。需要继续修改。也就是每修改一次,都要执行两个命令才算修改成功了,大概就是下面这样。

如果次数过多,操作到中间的时候你不记得还有没有要改的,可以通过git status 看下当前状态,如果看到类似下面的信息,就说明还没修改完,需要继续。

直到输出 Successfully rebased and updated xxxx时,表示全部修改完成。

5、推送到到远程

如果你的错误提交没推送到远程,到第四步已经结束了。但如果已经推送到了远程仓库,我们也需要把相应的修改推送上去。

执行命令git push origin 你的分支名 –force即可。

 

修改之后如下: