git提交commit后push到远程仓库,如何修改commit信息

本文转载自简书桃子大人

最近在提交代码的时候碰到一个问题,代码commit并push到远程仓库后发现提交人的信息有误,远程仓库显示的提交人不是我。虽然这对于开发来说并无大碍,但身为强迫症的我怎么能忍?但代码已经push到远程仓库了,怎么修改记录里提交人的姓名和邮箱?

在网上查了一些资料后,发现了很多种暴力的解决方法,比如直接删除整个分支等等。这里分享一种相对来说比较优雅的方法。

这里用到了git中的rebase,关于rebase相关知识网上很多,这里就不大刀阔斧的讲基本原理了,直接上解决方法。

首先我们要查看本地仓库的commit信息,这里可以打开git bash输入git log命令查看,也可以使用git GUI图形界面查看。这里我通过git GUI查看项目的commit信息。

在项目根目录中打开git GUI界面,这里我没有其它分支,直接点击Visualize master's History就可以查看主线的历史记录了。

这里可以看到我们每一次commit的信息,包括SHA1 ID的值。这里我们只需要SHA1 ID值的前七位就行了。这里我们以修改前面两个commit用户名和邮箱为例。找到前两个commit前一次commit的SHA1 ID值前七位。这里是795b3a7。

打开git bash,执行rebase -i操作。

执行后会出现git的vim编辑器,里面会有哈希值为795b3a7的commit之后所有commit的信息。这时按下键盘i键进入编辑模式,将需要修改的commit信息前面的pick改成edit。按esc退出编辑模式,输入:wq保存并退出。

这时回到git bash界面,如果看到下面信息就表示成功了,可以开始修改commit信息了。

然后使用git commit --amend --author="zhangsan <zhangsan@qq.com>" --no-edit命令修改提交人的用户名和邮箱。修改完成后使用git rebase --continue命令继续修改下一条。(退出rebase模式也是这句)

这时候打开git GUI查看历史记录就可以看到commit的信息已经被修改了。

然后再无耻的使用git push --force命令将纂改后的历史记录强制push到远程仓库。(PS:强制更新有风险,使用需谨慎!在你强制更新的时候,如果别人也commit了代码,将会被你的强制更新覆盖!)

最后打开GitHub查看项目的历史记录可以看到修改的信息已经同步到服务器了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值