有时候,公司提交的代码必须使用公司邮箱,而你误操作,直接把自己个人邮箱提交上去了,此时你就会遇到这样的需求:如何修改git已提交的邮箱?

而这个需求对于新手来说,往往要花费半天的时间才能理解修改过程,简直太傻比了,所以我这里做一个详细的文档来帮助自己和你搞清楚这个流程。尤其要理解变基,它不是一个命令执行就完成了,而是一连串命令的组合。

变基

git rebase -i
复制代码

执行后,会打开最近一条的提交记录,当然上面的命令可以指定某一条记录,命令是:

git rebase -i "your commit id"
复制代码

对于sourcetree用户来说,commit id是SHA-1,可以右键某条提交记录,选择菜单"复制SHA-1到剪贴板",如下图:

变基rebase命令执行完成后,会打印类似如下内容:

pick bd81df5 更新API

# Rebase abcb9d0..bd81df5 onto abcb9d0 (1 command)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
复制代码

新手往往会一脸懵逼,不止所错,此时是在rebase的过程中,你需要把pick改为edit,如下:

edit bd81df5 更新API

# Rebase abcb9d0..bd81df5 onto abcb9d0 (1 command)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
复制代码

更改完成后,保存并退出vi编辑器::wq

然后会打印这样的消息:

chengmingdeMacBook-Pro:server cmlanche$ git rebase -i "abcb9d0d1e99cdad25d8d08119e494436b000e59"
Stopped at bd81df5...  更新API
You can amend the commit now, withgit commit --amend Once you are satisfied with your changes, rungit rebase --continue
chengmingdeMacBook-Pro:server cmlanche$
复制代码

给大家先科普一下这个amend英文单词,是修改的意思,对我来说好陌生,为啥不用change或者fix之类的。

上面的信息说了,如果你要amend,也就是要修改这个提交的话,那么用

git commit --amend
复制代码

如果你对这次修改满意的话,就用如下命令结束此次变基

git rebase --continue
复制代码

重置账户邮箱信息

我们当然要修改啦,那么执行如下命令,重置提交的账户信息:

git commit --amend --author="cmlanche <1204833748@qq.com>" --no-edit
复制代码

同事,要注意你的sourcetree,出现了新情况!

我们可以看到一个新的提交,并且,邮箱账号都经过了修改,如果你去掉--no-edit还可以修改commit message,也就是图中的"更新API",举栗子吧,我可以继续用amend修改此次变基

git commit --amend --author="cmlanche <1204833748@qq.com>"
复制代码

保存退出vi编辑器,看sourcetree咋样了:

真的很完美,接下来就是合并了,退出变基。

退出变基

git rebase --continue
复制代码

在控制台中打印如上命令退出变基,我们看到退出变基也就是使用最新的修改了,就一条分支了。

chengmingdeMacBook-Pro:server cmlanche$ git rebase --continue
Successfully rebased and updated refs/heads/bulma.
复制代码

最后总结一下

变基真的很有用,他不是一条命令搞定的,是一个过程,就像变成中打开了一个输入流,最后用完你得关闭输入流一样。

通过变基你可以轻松实现提交信息的任意重新修改!

转载于:https://juejin.im/post/5cd8f73df265da038932b2fc

如何修改git已提交记录的邮箱?相关推荐

  1. 修改 Git 已经提交记录的 用户名 和邮箱

    修改 Git 已经提交记录的 用户名 和邮箱 有关 Git 和版本控制的常见问题. 如何更改提交的作者姓名/电子邮件? 在我们进入解决方案之前,让我们找出您到底想要完成什么: 在提交之前更改作者信息 ...

  2. git_修改git历史提交记录

    本修改仅限于修改本地的提交,提交的远程的请勿修改,以防引起开发者混乱. 首先执行 git rebase -i HEAD~3 这里首先rebase到HEAD~3的提交,这是你可以修改HEAD~2 - H ...

  3. 修改git已提交的commit中提交者的用户名和邮箱

    如下图中,将已经提交的commit中,用户名jincheng-demo,jincheng-demo01,以及邮箱jincheng@test.com, 修改为正确的用户名:jincheng,正确的邮箱: ...

  4. 【mac如何修改git本地提交代码的用户名和邮箱】

    mac如何修改git本地提交代码的用户名和邮箱 入职新公司,推完代码发现推送人不是自己,因为电脑里还是前同事的用户信息,所以我们需要在本地客户端重新设置一下. 一.打开mac的终端,查看本地配置 # ...

  5. 修改git历史提交的commit信息

    本文是基于idea的操作,亲测可用 前言: 很多公司都会自定义 Git - 使用强制策略,那么他的commit信息就会有固定的格式,一旦不是这个格式,就会出现push失败 但是push失败,很多也只在 ...

  6. git修改已提交记录的注释

    已提交暂存区但还未提交远端仓库 命令:git commit --amend -m 已提交远端仓库 命令:git rebase 可以参考:http://www.cnblogs.com/dudu/p/47 ...

  7. git commit --amend修改git commit提交的message

    当git commit -m "message"提交之后,在push之前,发现git commit中的message有误,想把提交的message改过来,有什么办法? 首先输入gi ...

  8. 怎样修改git用户名、密码和邮箱?

    如何查看git用户名? 命令如下: git config user.name 如何查看git密码? 命令如下: git config user.password 如何查看git邮箱地址? 命令如下: ...

  9. Git已提交代码,强行回退,覆盖曾提交过得代码(删除提交记录)

    工具:SourceTree git版本控制 第一步:选择想要回退提交的地方,回滚 直接确定:无需其他操作 此时:回到了当前提交的状态(文件该储藏,该丢弃,自己选择):我这里是直接储藏(因为提交错分支了 ...

最新文章

  1. 微软并行编程类库Parallel Extensions初探 Part1
  2. Java 冒泡排序的实现
  3. Windows误关闭资源管理器重启的办法
  4. webpack 4x的安装和简单使用
  5. Best Coder Round#25 1003 树的非递归访问
  6. 如何在Python中解析XML?
  7. 字节跳动教育部分开始裁员,N+2赔付...一大波读者失业
  8. mybatis xml sql分页
  9. 【十次方】十次方项目前期准备
  10. 微信支付:手机系统自带的浏览器,调用微信支付如何实现(非扫码)
  11. 22条创业军规(读书)
  12. 模拟文曲星上的猜数游戏c语言,文曲星上的“猜数字”游戏Python版
  13. Multiple Instance Detection Network with Online Instance Classifier Refinement
  14. 模仿某招聘网站的Js搜索菜单
  15. HTML页面只能使用微信浏览器打开
  16. Hi3519v101 uart驱动
  17. 愉快的学习就从翻译开始吧_0-Time Series Forecasting with the Long Short-Term Memory Network in Python
  18. 选购移动硬盘注意事项
  19. 国足晋级12强 | 爬取《NBA30支球队》“现役球员信息”,再来看看篮球吧!
  20. ORAN专题系列-18:5G O-RAN FrontHaul前传接口互操作性测试规范IOT概述与总体架构

热门文章

  1. tensorflow神经网络拟合非线性函数与操作指南
  2. 深度学习解决多视图非线性数据特征融合问题
  3. js面向对象的封装方法,【案例】
  4. 一个利用Dataflow实现的Actor
  5. spring中lazy-init详解
  6. POJ3080方法很多(暴力,KMP,后缀数组,DP)
  7. hdu4998 旋转坐标系
  8. 【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )
  9. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 )
  10. 【EventBus】事件通信框架 ( 订阅类-订阅方法缓存集合 | 事件类型-订阅者集合 | 订阅对象-事件类型集合 )