前一陣子,用公司電腦寫自己的 code,結果…啊啊啊啊, git 的作者資訊顯示的是公司帳號阿 QAQ
原本想說回家後,用 git cherry-pick
一個 commit 一個 commit 搬移後,再重新 commit。結果發現…靠!有將近 20 個 commit ,這樣搬會瘋掉的。
還好找到了這篇 修改 Git commits 的作者資訊 ,雖然情境不太一樣,人家是回家加班寫 code,我是上班時間摸魚進修,不過目的都是一樣的都是修改 Git commits 的作者資訊。
修改 Git commits 的作者資訊
1. 情境
假設目前 git log 存在多筆 commit , A → B → c → d → e, e 是目前最新的 commit ,也就是 HEAD。 其中大小寫字母屬於不同作者提交的 commit。以我的案例來說,大寫是我私人帳號、小寫的則是我公司帳號。
2. 指令
若想修改 c、d、e 三筆 commits 的作者資訊,依序執行下列步驟:
- 在專案目錄下 rebase 指令
1
$ git rebase -i <B 的 commit id>
- 此時,終端器上會出現類似下面的
1
2
3pick <c 的 commitId> <c 的 commit 內容> pick <d 的 commitId> <d 的 commit 內容> pick <e 的 commitId> <e 的 commit 內容>
將要更改的 commit 的 command 由 pick 改成 e 或 edit後,儲存離開進入 rebase 流程。
- 此時它會提醒你目前停在 c 的 commit,顯示如下:
1
2
3
4
5
6
7
8Stopped at <c 的 commitId> <c 的 commit 內容> You can amend the commit now, with git commit --amend Once you are satisfied with your changes, run git rebase --continue
- 接著輸入正確的作者姓名與 E-mail。
1
$ git commit --amend --author="Author Name <email@address.com>"
- 修改完成後,就告知 git 並存檔繼續。
1
$ git rebase --continue
- 接下來會進入下一個被修改 commit ,也就是 d,重覆進行 步驟 3、4、5,直到所有 commit 被修改完成。
修改專案的作者資訊
不過每次這樣改有點麻煩,畢竟我剛剛是重覆執行了二十次阿!
與其事後修補,倒不如防範未然。所以我想直接修改專案的作者資訊,由於指令不帶 --global
參數,因此它的作用域只有在這個專案,不會影響整個 git 環境:
1 |
|