社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

如何修改git已提交记录的邮箱?

cmlanche • 4 年前 • 168 次点击  
阅读 10

如何修改git已提交记录的邮箱?

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

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

变基

git rebase -i 
复制代码

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

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

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

image-20190513113342522

变基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, with

  git commit --amend 

Once you are satisfied with your changes, run

  git rebase --continue
chengmingdeMacBook-Pro:server cmlanche$ 
复制代码

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

image-20190513114137949

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

git commit --amend
复制代码

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

git rebase --continue
复制代码

重置账户邮箱信息

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

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

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

image-20190513114851415

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

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

image-20190513115132114

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

image-20190513115216969

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

退出变基

git rebase --continue
复制代码

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

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

image-20190513115442779

最后总结一下

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

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/32924
 
168 次点击