本地有多個git賬號時,容易發生忘記設置項目默認賬號,最后以全局賬號提交的情況,其實對代碼本身並無影響,只是提交記錄里顯示的是別的名字稍顯別扭。
舉個例子: 查看提交日志,假設以a(a@email.com)提交了三次,發現提交用戶錯了,應該用b用戶提交:
$ git log
# 輸出如下
commit 3 (HEAD -> branch1)
Author: a <a@email.com>
Date: Thu Nov 22 16:22:59 2018 +0800
commit 3
commit 2 (HEAD -> branch1)
Author: a <a@email.com>
Date: Thu Nov 22 16:22:59 2018 +0800
commit 2
commit 1 (HEAD -> branch1)
Author: a <a@email.com>
Date: Thu Nov 22 16:22:59 2018 +0800
commit 1
一、如何重置本項目用戶信息:
$ git config user.name 'b'
$ git config user.email b@email.com
二、使用amend命令修改commit信息(注: amend命令只會修改最后一次commit的信息,之前的commit需要使用rebase)
$ git commit --amend --reset-author
三、如果需要修改歷史提交消息,通過rebase操作
$ git rebase -i HEAD~3 // 這個命令如果報錯,請翻我博客,有解決方法
# 輸出如下
pick 1 commit 1
pick 2 commit 2
pick 3 commit 3
要修改哪個,就把那行的pick改為edit,然后退出。例如想修改commit 1的author,光標移到第一個pick,按i鍵進入INSERT模式,把pick改為edit:
edit 1 commit 1
pick 2 commit 2
pick 3 commit 3
...
-- INSERT --
然后按esc鍵,退出INSERT模式,輸入:wq退出,這時可以看到提示,可以修改commit 1的信息了:
輸入amend命令重置用戶信息: $ git commit --amend --reset-author
會出現commit 1的提交記錄及注釋內容,可進入INSERT模式修改注釋,:wq退出。
這時再查看提交歷史,發現commit 1的author已經變成b(b@email.com)了,且是最新一次記錄。
通過continue命令回到正常狀態: $ git rebase --continue