修改 Git 提交記錄的作者名和郵箱
最近在使用 Git 時,遇到了一個需求:修改某些提交記錄中的提交名和郵箱。由於提交時誤用了錯誤的姓名和郵箱,歷史記錄中的幾次提交需要更新。發現使用 git rebase 結合 git commit --amend 是一種比較優雅的方式,可以靈活修改歷史記錄中的提交名和郵箱。
步驟記錄
-
檢視提交歷史
首先,使用git log --oneline
檢視了提交歷史,找出需要修改的提交。例如,我發現最近的 3 次提交中,有 2 次提交資訊需要修改。具體的命令如下:
git log --oneline
修改最近的 3 次提交中的第 1 次和第 3 次(可以透過 hash 來檢視哪些提交記錄)。 -
進入互動式 rebase
使用git rebase -i
進入互動式 rebase 模式,可以選擇我想修改的提交。在這裡,我選擇了最近的 3 次提交:
git rebase -i HEAD~3
編輯器會開啟一個列表,顯示最近的 3 次提交記錄:
pick 123abc 提交資訊 1
pick 456def 提交資訊 2
pick 789ghi 提交資訊 3
我把第 1 次和第 3 次提交的 pick 改成 edit,表示我要修改這兩次提交的詳細資訊:
edit 123abc 提交資訊 1
pick 456def 提交資訊 2
edit 789ghi 提交資訊 3
儲存並退出編輯器。
-
修改作者名和郵箱
Git 會依次停在我標記為 edit 的提交上。首先,停在第 1 次提交,讓我可以修改作者資訊。然後使用了 git commit --amend 並指定新的作者名和郵箱:
git commit --amend --author="John Doe <johndoe@example.com>"
這個命令修改了該提交的作者資訊。然後我繼續 rebase:
git rebase --continue
Git 繼續處理下一個標記為 edit 的提交,到了第 3 次提交時,重複上述步驟,修改了作者資訊:
git commit --amend --author="Jane Smith <janesmith@example.com>"
再次執行git rebase --continue
,完成了所有修改。 -
推送到遠端倉庫
完成本地的提交記錄修改後,還需要將修改推送到遠端倉庫。由於這些提交已經在遠端倉庫中,使用了強制推送來覆蓋之前的記錄:
git push --force
總結
透過 git rebase -i 和 git commit --amend --author,成功修改了指定提交記錄的作者名和郵箱。