有时候,公司提交的代码必须使用公司邮箱,而你误操做,直接把本身我的邮箱提交上去了,此时你就会遇到这样的需求:如何修改git已提交的邮箱?git
而这个需求对于新手来讲,每每要花费半天的时间才能理解修改过程,简直太傻比了,因此我这里作一个详细的文档来帮助本身和你搞清楚这个流程。尤为要理解变基,它不是一个命令执行就完成了,而是一连串命令的组合。shell
git rebase -i
执行后,会打开最近一条的提交记录,固然上面的命令能够指定某一条记录,命令是:编辑器
git rebase -i "your commit id"
对于sourcetree用户来讲,commit id是SHA-1,能够右键某条提交记录,选择菜单"复制SHA-1到剪贴板",以下图:this
变基rebase命令执行完成后,会打印相似以下内容:spa
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,以下:rest
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
code
而后会打印这样的消息:server
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之类的。rem
上面的信息说了,若是你要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.
变基真的颇有用,他不是一条命令搞定的,是一个过程,就像变成中打开了一个输入流,最后用完你得关闭输入流同样。
经过变基你能够轻松实现提交信息的任意从新修改!