git 修改之前提交記錄的某幾次記錄的賬號和郵箱

灵火發表於2024-10-16

修改 Git 提交記錄的作者名和郵箱

最近在使用 Git 時,遇到了一個需求:修改某些提交記錄中的提交名和郵箱。由於提交時誤用了錯誤的姓名和郵箱,歷史記錄中的幾次提交需要更新。發現使用 git rebase 結合 git commit --amend 是一種比較優雅的方式,可以靈活修改歷史記錄中的提交名和郵箱。

步驟記錄

  1. 檢視提交歷史
    首先,使用 git log --oneline 檢視了提交歷史,找出需要修改的提交。例如,我發現最近的 3 次提交中,有 2 次提交資訊需要修改。具體的命令如下:
    git log --oneline
    修改最近的 3 次提交中的第 1 次和第 3 次(可以透過 hash 來檢視哪些提交記錄)。

  2. 進入互動式 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

儲存並退出編輯器。

  1. 修改作者名和郵箱
    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,完成了所有修改。

  2. 推送到遠端倉庫
    完成本地的提交記錄修改後,還需要將修改推送到遠端倉庫。由於這些提交已經在遠端倉庫中,使用了強制推送來覆蓋之前的記錄:
    git push --force

總結

透過 git rebase -i 和 git commit --amend --author,成功修改了指定提交記錄的作者名和郵箱。

相關文章