最近因为疫情原因,一直在居家办公。在提交代码的时候,没注意公司仓库与个人仓库的区分,提交公司代码时使用了个人仓库的用户名。所以就需要修改已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,上面的操作只是修改了最早的一次提交的,剩下的还没修改。需要继续修改。也就是每修改一次,都要执行两个命令才算修改成功了,大概就是下面这样。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// 修改最早的一次 git rebase --amend --author="你想改回的名字 <你想改回的邮箱>" --no-edit git rebase --continue // 修改第二早的一次 git rebase --amend --author="你想改回的名字 <你想改回的邮箱>" --no-edit git rebase --continue // 修改第三早的一次 git rebase --amend --author="你想改回的名字 <你想改回的邮箱>" --no-edit git rebase --continue ... |
如果次数过多,操作到中间的时候你不记得还有没有要改的,可以通过git status 看下当前状态,如果看到类似下面的信息,就说明还没修改完,需要继续。
1 2 3 4 5 6 7 8 9 |
interactive rebase in progress; onto a20a956 Last command done (1 command done): edit 0ffead2 feat:测试组件开发完成 No commands remaining. You are currently editing a commit while rebasing branch 'feature/v20220212-init-project' on 'a20a956'. (use "git commit --amend" to amend the current commit) (use "git rebase --continue" once you are satisfied with your changes) nothing to commit, working tree clean |
直到输出 Successfully rebased and updated xxxx时,表示全部修改完成。
5、推送到到远程
如果你的错误提交没推送到远程,到第四步已经结束了。但如果已经推送到了远程仓库,我们也需要把相应的修改推送上去。
执行命令git push origin 你的分支名 –force即可。
修改之后如下:
发表评论