Git修改提交commit message中的username、email

最近换了家公司,由于公司比较大,对提交代码方面也有些规范,这两天就踩了坑,因此在这里记录一下。

1、问题描述

在本地push代码到公司的git服务器上时,git服务器会校验commit message,主要会校验用户名和email。按照规范,我的用户名应该是xxx,email应该是公司邮箱[email protected],一旦违反这个规则,git服务器就会reject这次push。但由于我是新来的,还不熟悉这个规则,我没有配置好用户名和email,导致我的提交是这样的

Git修改提交commit message中的username、email_第1张图片
1.png

开发分支是dev,用户名是zhanghaochen,email是[email protected],这违反了公司的规范,push一直被reject,我只能修改这次commit的username和email,才能解决push失败的问题。
在网上搜到的都是用git commit --amand 来修改commit message,但我发现这并不能改变已提交代码的username和email信息。。

2、解决步骤

a、修改本地git的username和email
git config user.name "xxx"
git config user.email "[email protected]"
b、创建新分支

从这次提交前的commit上新建一个新分支。举个例子,我这次错误的提交叫做first commit,这之前的提交是init,那就在init这个commit上执行New Branch,新分支的名字自己起一个,我把它起为temp分支。


Git修改提交commit message中的username、email_第2张图片
2.png

执行New Branch操作后,若还没有将temp分支checkout,则将其checkout,确保当前head在temp分支。


3.png

c、执行cherry pick

这第三步骚操作来了,就是将dev分支上错误的commit中代码的改动部分cherry pick到我们的temp这个分支上。

Git修改提交commit message中的username、email_第3张图片
4.png

修改好commit message并提交。
Git修改提交commit message中的username、email_第4张图片
5.png

最终结果如下图所示:
Git修改提交commit message中的username、email_第5张图片
6.png

可以看到,temp分支上的这个提交,username是xxx,email是[email protected],已经达到了我们所需要的效果。

d、将temp分支改为dev分支

这一步很简单,删除本地的dev分支,将temp分支重命名为dev分支。

3、总结

本次问题解决本质上相当于是重新写了一遍代码并重新提交。依赖了git的cherry pick这个强大的功能,我们只需要事先修改好username和email,就可以实现修改commit message中的username和email这一需求。

你可能感兴趣的:(Git修改提交commit message中的username、email)