昨天晚上在家改公司的專案,一時不察就直接 git commit -am "回家寫扣真辛苦"
,赫然發現…啊啊啊啊 Git 作者 是我平常在外面闖蕩用的 name + email
這下該怎辦呢?好在找到這篇 StackOverflow 上的文章,一步一步教你改…
假設今天 git history 有三筆 commits A->B->C->D->E->F,F 是 HEAD 也就是目前最新的。
假如我想要更改 DEF 這三個在家裡做的 commit 只需要下列步驟:
- 目錄下指令
git rebase -i C
- 會出現
pick D pick E pick F
把 pick 改為 edit,關閉後就會進入 rebase 流程 - 此時你會停在 D 這個 commit 上頭,輸入
git commit --amend --author="Author Name <email@address.com>"
git rebase --continue
- 就會移動到 E,以此類推重複步驟 3, 4
- 最後都完成就大功告成啦!
PS1. 如果是像我把 Repo 放在 Dropbox 內然後在不同電腦寫 code 的話,可以輸入下面指令git config user.name "YOUR NAME"
git config user.email "YOUR EMAIL"
如此一來,就不會去用到 git global config 了
PS2. 除此之外 Github 也有提供大量更改過去 commit 的方法 (git filter-branch) Script 在此