我有两台Mac,一台mac mini在家使用,一台macbook用于工作,偶尔周末也会开发一些side project代码。有时候我会从不同的设备向github仓库push代码。在macbook上开发时,如果我没有对github的仓库设置我的个人用户名和邮箱,当我push代码时,会使用配置在全局的工作使用的git帐号信息。
在github上看到自己的工作帐号时,总是感觉不舒服。如何修改commit信息中的帐号呢?
在创建commit的时候,可以通过增加参数—author
设置本次commit的作者信息。
git commit -m "my commit" --author "zhanglun <zhanglun1410@gmail.com>"
如果commit已经创建了,想对其记录中的作者信息进行修改,可以使用—amend
参数。
git commit --amend --author "zhanglun <zhanglun1410@gmail.com>"
还可以使用rebase编辑commit的作者,不过使用rebase时,其实也是—amend的应用。
如果commit已经push到远端,则可能需要一些小技巧了,下面的几个步骤就是通过替换commit来实现修改提交者帐号信息的能力。
1、首先,找到记录中想替换的comimit。
git log --abbrev-commit
commit b123892 (HEAD -> master, origin/master, origin/HEAD)
Author: thewrongname <someone@else.com>
Date: Thu Aug 27 10:10:33 2020 -0500
Commit from another computer!
commit a928338
Author: dev.logfetch <dev.logfetch@gmail.com>
Date: Thu Aug 27 00:28:07 2020 -0500
Commit from my personal computer!
...
假设我们想将第一个commit b123892
的作者修改成第二个commit相同的作者。先切换到这个commit。
git checkout b123892
2、修改作者。
git commit --amend --author "logfetch <dev.logfetch@gmail.com>"
3、接下来回到第一步所在的分支
# git checkout branch_name
git checkout master
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
c894824 Commit from another computer!
c894824
是新创建的commit。
4、使用新commit替换旧commit
# git replace old_hash new_hash
git replace b123892 c894824
5、基于新的commit重写未来的commit
git filter-branch -- --all
6、删除掉被替换的commit
# git replace -d old_hash
git replace -d b123892
建议在执行push操作之前,使用log命令检查之前的操作是否成功。